欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java實(shí)現(xiàn)可逆加密算法

 更新時(shí)間:2019年03月22日 09:30:22   作者:Tony-Lu  
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)可逆加密算法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

很多加密包都提供復(fù)雜的加密算法,比如MD5,這些算法有的是不可逆的。

有時(shí)候我們需要可逆算法,將敏感數(shù)據(jù)加密后放在數(shù)據(jù)庫(kù)或配置文件中,在需要時(shí)再再還原。

這里介紹一種非常簡(jiǎn)單的java實(shí)現(xiàn)可逆加密算法。

算法使用一個(gè)預(yù)定義的種子(seed)來(lái)對(duì)加密內(nèi)容進(jìn)行異或運(yùn)行,解密只用再進(jìn)行一次異或運(yùn)算就還原了。

代碼如下:

seed任意寫都可以。

代碼:

package cn.exam.signup.service.pay.util;
 
import java.math.BigInteger;
import java.util.Arrays;
 
public class EncrUtil {
 private static final int RADIX = 16;
 private static final String SEED = "0933910847463829232312312";
 
 public static final String encrypt(String password) {
 if (password == null)
  return "";
 if (password.length() == 0)
  return "";
 
 BigInteger bi_passwd = new BigInteger(password.getBytes());
 
 BigInteger bi_r0 = new BigInteger(SEED);
 BigInteger bi_r1 = bi_r0.xor(bi_passwd);
 
 return bi_r1.toString(RADIX);
 }
 
 public static final String decrypt(String encrypted) {
 if (encrypted == null)
  return "";
 if (encrypted.length() == 0)
  return "";
 
 BigInteger bi_confuse = new BigInteger(SEED);
 
 try {
  BigInteger bi_r1 = new BigInteger(encrypted, RADIX);
  BigInteger bi_r0 = bi_r1.xor(bi_confuse);
 
  return new String(bi_r0.toByteArray());
 } catch (Exception e) {
  return "";
 }
 }
 
 public static void main(String args[]){
 System.out.println(Arrays.toString(args));
 if(args==null || args.length!=2) return;
 if("-e".equals(args[0])){
  System.out.println(args[1]+" encrypt password is "+encrypt(args[1]));
 }else if("-d".equals(args[0])){
  System.out.println(args[1]+" decrypt password is "+decrypt(args[1]));
 }else{
  System.out.println("args -e:encrypt");
  System.out.println("args -d:decrypt");
 }
 }
 
}

運(yùn)行以上代碼:

[-e, 1234567890]
1234567890 encrypt password is 313233376455276898a5

[-d, 313233376455276898a5]
313233376455276898a5 decrypt password is 1234567890

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java中的length和length()深入分析

    Java中的length和length()深入分析

    java中的length屬性是針對(duì)數(shù)組說(shuō)的,比如說(shuō)你聲明了一個(gè)數(shù)組,想知道這個(gè)數(shù)組的長(zhǎng)度則用到了length這個(gè)屬性。java中的length()方法是針對(duì)字符串String說(shuō)的,如果想看這個(gè)字符串的長(zhǎng)度則用到length()這個(gè)方法。這篇文章將介紹幾個(gè)關(guān)于Java數(shù)組的關(guān)鍵概念。
    2016-11-11
  • SpringBoot配置類編寫過(guò)程圖解

    SpringBoot配置類編寫過(guò)程圖解

    這篇文章主要介紹了SpringBoot配置類編寫過(guò)程圖解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • 詳細(xì)講解springboot如何實(shí)現(xiàn)異步任務(wù)

    詳細(xì)講解springboot如何實(shí)現(xiàn)異步任務(wù)

    異步:異步與同步相對(duì),當(dāng)一個(gè)異步過(guò)程調(diào)用發(fā)出后,調(diào)用者在沒(méi)有得到結(jié)果之前,就可以繼續(xù)執(zhí)行后續(xù)操作。也就是說(shuō)無(wú)論異步方法執(zhí)行代碼需要多長(zhǎng)時(shí)間,跟主線程沒(méi)有任何影響,主線程可以繼續(xù)向下執(zhí)行
    2022-04-04
  • Java中的forEach循環(huán)詳細(xì)解讀

    Java中的forEach循環(huán)詳細(xì)解讀

    這篇文章主要介紹了Java中的forEach循環(huán)詳細(xì)解讀,不要再foreach循環(huán)里面進(jìn)行元素的add和remove,如果你非要進(jìn)行remove元素,那么請(qǐng)使用Iterator方式,如果存在并發(fā),那么你一定要選擇加鎖,需要的朋友可以參考下
    2023-12-12
  • 淺析Spring IOC bean為什么默認(rèn)是單例

    淺析Spring IOC bean為什么默認(rèn)是單例

    單例的意思就是說(shuō)在 Spring IoC 容器中只會(huì)存在一個(gè) bean 的實(shí)例,無(wú)論一次調(diào)用還是多次調(diào)用,始終指向的都是同一個(gè) bean 對(duì)象,本文小編將和大家一起分析Spring IOC bean為什么默認(rèn)是單例,需要的朋友可以參考下
    2023-12-12
  • Java IO流之字符緩沖流實(shí)例詳解

    Java IO流之字符緩沖流實(shí)例詳解

    這篇文章主要介紹了Java IO流之字符緩沖流,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • Java判斷范圍型的數(shù)據(jù)是否存在重疊的方法

    Java判斷范圍型的數(shù)據(jù)是否存在重疊的方法

    遇到了個(gè)問(wèn)題,同一天可以輸入多個(gè)時(shí)間段,但是每個(gè)時(shí)間段的時(shí)間不能出現(xiàn)重疊,這不就是判斷數(shù)據(jù)返回是否有重疊的變種嗎,所以本文給大家介紹了Java判斷范圍型的數(shù)據(jù)是否存在重疊的方法,需要的朋友可以參考下
    2024-07-07
  • IDEA中如何使用注解Test

    IDEA中如何使用注解Test

    這篇文章主要介紹了IDEA中如何使用注解Test問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • Java枚舉學(xué)習(xí)之定義和基本特性詳解

    Java枚舉學(xué)習(xí)之定義和基本特性詳解

    枚舉是JAVA?5.0后增加的一個(gè)重要類型??梢杂脕?lái)表示一組取值范圍固定的變量。本文將通過(guò)示例為大家詳細(xì)講解枚舉的定義和基本特性,感興趣的可以了解一下
    2022-08-08
  • SpringBoot項(xiàng)目如何打包成war包

    SpringBoot項(xiàng)目如何打包成war包

    使用SpringBoot 開(kāi)發(fā)項(xiàng)目,由于內(nèi)置了Tomcat,所以項(xiàng)目可以直接啟動(dòng),部署到服務(wù)器的時(shí)候,直接打成 jar 包,就可以運(yùn)行了,這篇文章主要介紹了SpringBoot項(xiàng)目如何打包成war包,需要的朋友可以參考下
    2024-07-07

最新評(píng)論