日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java解密方法,java加密,解密方法

發(fā)布時間:2024/9/15 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java解密方法,java加密,解密方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

/**

*AES加密解密工具類

*@author M-Y

*/

public class AESUtil {

private static Logger log = LoggerFactory.getLogger(AESUtil.class);

private static final String defaultCharset = "UTF-8";

private static final String KEY_AES = "AES";

private static final String KEY = "2A3D75862E69BF61DFAD94017E930227A715C8E533AA1A12361D6";

/**

* 加密

*

* @param data 需要加密的內容

* @param key 加密密碼

* @return

*/

public static String encrypt(String data, String key) {

return doAES(data, key, Cipher.ENCRYPT_MODE);

}

/**

* 解密

*

* @param data 待解密內容

* @param key 解密密鑰

* @return

*/

public static String decrypt(String data, String key) {

return doAES(data, key, Cipher.DECRYPT_MODE);

}

/**

* 加解密

*

* @param data 待處理數據

* @param password 密鑰

* @param mode 加解密mode

* @return

*/

private static String doAES(String data, String key, int mode) {

try {

if (StringUtils.isBlank(data) || StringUtils.isBlank(key)) {

return null;

}

//判斷是加密還是解密

boolean encrypt = mode == Cipher.ENCRYPT_MODE;

byte[] content;

//true 加密內容 false 解密內容

if (encrypt) {

content = data.getBytes(defaultCharset);

} else {

content = parseHexStr2Byte(data);

}

//1.構造密鑰生成器,指定為AES算法,不區(qū)分大小寫

KeyGenerator kgen = KeyGenerator.getInstance(KEY_AES);

//2.根據ecnodeRules規(guī)則初始化密鑰生成器

/*

* 問題我已解決,這個是由于linux和window的內核不同造成的!

* SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG");

* secureRandom.setSeed(PASSWORD.getBytes());

* 然后初始化,就能解決這個問題!

*/

SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG");

secureRandom.setSeed(key.getBytes());

//生成一個128位的隨機源,根據傳入的字節(jié)數組

kgen.init(128, secureRandom);

//3.產生原始對稱密鑰

SecretKey secretKey = kgen.generateKey();

//4.獲得原始對稱密鑰的字節(jié)數組

byte[] enCodeFormat = secretKey.getEncoded();

//5.根據字節(jié)數組生成AES密鑰

SecretKeySpec keySpec = new SecretKeySpec(enCodeFormat, KEY_AES);

//6.根據指定算法AES自成密碼器

Cipher cipher = Cipher.getInstance(KEY_AES);// 創(chuàng)建密碼器

//7.初始化密碼器,第一個參數為加密(Encrypt_mode)或者解密解密(Decrypt_mode)操作,第二個參數為使用的KEY

cipher.init(mode, keySpec);// 初始化

byte[] result = cipher.doFinal(content);

if (encrypt) {

//將二進制轉換成16進制

return parseByte2HexStr(result);

} else {

return new String(result, defaultCharset);

}

} catch (Exception e) {

log.error("AES 密文處理異常", e);

}

return null;

}

/**

* 將二進制轉換成16進制

*

* @param buf

* @return

*/

public static String parseByte2HexStr(byte buf[]) {

StringBuilder sb = new StringBuilder();

for (int i = 0; i < buf.length; i++) {

String hex = Integer.toHexString(buf[i] & 0xFF);

if (hex.length() == 1) {

hex = '0' + hex;

}

sb.append(hex.toUpperCase());

}

return sb.toString();

}

/**

* 將16進制轉換為二進制

*

* @param hexStr

* @return

*/

public static byte[] parseHexStr2Byte(String hexStr) {

if (hexStr.length() < 1) {

return null;

}

byte[] result = new byte[hexStr.length() / 2];

for (int i = 0; i < hexStr.length() / 2; i++) {

int high = Integer.parseInt(hexStr.substring(i * 2, i * 2 + 1), 16);

int low = Integer.parseInt(hexStr.substring(i * 2 + 1, i * 2 + 2), 16);

result[i] = (byte) (high * 16 + low);

}

return result;

}

public static void main(String[] args) throws Exception {

String decrypt = AESUtil.encrypt("119852292879", BusinessTypeConstant.SECRET_KEY);

System.out.println(decrypt);

String str = AESUtil.decrypt("6F47907853576C750915B9A50455285D",BusinessTypeConstant.SECRET_KEY);

System.out.println(str);

// KeyPairGenerator generator = KeyPairGenerator.getInstance("RSA");

// generator.initialize(512, new SecureRandom());

// KeyPair pair = generator.generateKeyPair();

// PublicKey pubKey = pair.getPublic();

// PrivateKey privKey = pair.getPrivate();

//

// byte[] pk = pubKey.getEncoded();

// byte[] privk = privKey.getEncoded();

//

// String strpk = new String(Base64.encodeBase64(pk));

// System.out.println("=====================生成公鑰秘鑰:"+strpk);

//

// String strppk = new String(Base64.encodeBase64(privk));

// System.out.println("=====================生成私鑰秘鑰:"+strppk);

// //*******************************************************************************************************************

// String content = "{'repairPhone':'18547854787','customPhone':'12365478965','captchav':'58m7'}";

// System.out.println("加密前:" + content);

// System.out.println("加密密鑰和解密密鑰:" + KEY);

// String encrypt = encrypt(content, KEY);

// System.out.println("加密后:" + encrypt);

// String decrypt = decrypt(encrypt, KEY);

// System.out.println("解密后:" + decrypt);

}

}

總結

以上是生活随笔為你收集整理的java解密方法,java加密,解密方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产精品178页 | 男生和女生一起搞鸡 | 91中文字幕在线视频 | 色婷婷aⅴ一区二区三区 | 中文字幕成人在线观看 | 国产精品后入内射日本在线观看 | 午夜寂寞院 | av免费网站 | 操操网 | 乱色欧美 | 欧美一级生活片 | 一级黄色欧美 | 免费视频91| 久久影业 | 婷婷综合| 精品国精品国产 | 中文字幕一二三四 | 国产日韩欧美不卡 | 日韩不卡视频在线 | 亚洲精品在线影院 | 日韩一级片在线 | 亚洲一二三四在线 | 女人扒开腿让男人捅爽 | 亚洲免费a | 乱中年女人伦 | 亚洲色诱 | 亚洲第七页 | 国产又大又黑又粗免费视频 | 国内久久精品视频 | 成人国产在线观看 | www.欧美| 玖玖爱免费视频 | 一卡二卡在线观看 | 日韩黄色大全 | 91亚色在线观看 | 深夜的私人秘书 | 日本欧美一区 | 超碰人人干人人 | 韩国三级免费 | 日韩二区 | av免费天堂 | 我不卡av| 一本久道久久综合无码中文 | 女人和拘做爰正片视频 | 男人深夜影院 | 超碰超碰超碰超碰超碰 | 女性裸体视频网站 | 久久久久人妻精品一区二区三区 | 亚洲成人中文字幕在线 | 在线观看免费视频a | 亚洲AV无码成人精品区麻豆 | 人人妻人人爽一区二区三区 | 欧美一级黄色片视频 | 肉色丝袜小早川怜子av | www.一区二区三区四区 | 国产成人99久久亚洲综合精品 | 波多野结衣在线 | 日韩淫 | 一区二区三区波多野结衣 | 97在线免费视频观看 | 亚洲国产区 | 手机在线观看免费av | 亚洲日本精品视频 | 日韩毛片高清在线播放 | 亚洲大乳| 91麻豆精品国产91久久久更新时间 | 国产chinesehd精品 | 久久久久久国产视频 | av第一福利 | 91丨porny在线 | 活大器粗np高h一女多夫 | 好男人.www| 潘金莲一级淫片aaaaa武则天 | 日本高清视频免费观看 | 久久久成人精品一区二区三区 | 狠狠干视频网 | 亚洲熟女综合一区二区三区 | 4438国产精品一区二区 | 91成人免费看 | 国产精品理论片在线观看 | 一级做a爱片久久毛片 | 手机在线看片福利 | 国产日韩av一区二区 | 久久99久久99精品免观看软件 | 日韩乱码人妻无码中文字幕久久 | 男生操女生逼逼 | 四虎黄色网址 | 日本簧片在线观看 | 亚洲av久久久噜噜噜噜 | 男人你懂的网站 | 中文乱码人妻一区二区三区视频 | 亚洲一级黄色 | 极品人妻一区二区三区 | 黑人精品一区二区三区不 | 日韩一区二区三区精品 | av在线专区| 亚洲av成人片色在线观看高潮 | 夜夜操天天操 | 日韩中文字幕免费在线观看 |