整理所有的加解密相关的工具,并放到github上方便大家使用,其中包括对称密钥,非对称密钥。
github地址如下:https://github.com/lwaytogo/LidyBoot
package top.lidaoyuan.utils.security;
import java.util.Base64;
import org.apache.commons.codec.DecoderException;
import org.apache.commons.codec.binary.Hex;
/**
* 加解密相关工具类整理
* @author Lidy
*
*/
public class SecurityToolUtils {
/** 需要加密的字符串 */
private static final String src = "lidy context";
public static void main(String[] args) throws DecoderException {
/** 常用转换*/
System.out.println("---------16进制转换--------");
System.out.println("原始数据src:" + src);
String hexStr = Hex.encodeHexString(src.getBytes());
System.out.println("对应的16进制数据:" + hexStr);
String srcHexStr = new String(Hex.decodeHex(hexStr));
System.out.println("16进制对应的原始数据:" + srcHexStr);
System.out.println("-----------Base64加解密-----------------");
System.out.println("原始数据src:" + src);
String encodeStr = Base64.getEncoder().encodeToString(src.getBytes());
System.out.println("加密后:" + encodeStr);
byte[] decodeByte =Base64.getDecoder().decode(encodeStr);
System.out.println("解密后:" + new String(decodeByte));
/** 单项密钥加密 */
System.out.println("---------md5加密----------");
System.out.println("加密之前src:" + src);
System.out.println("解密后:" + MD5Utils.md5Hex(src));
System.out.println("---------macMD5加密----------");
System.out.println("加密之前src:" + src);
String keyMac = "dddd";
System.out.println("加密后:" + MacUtils.hmacHex(src, keyMac));
/** 对称密钥加解密 */
System.out.println("---------des加解密----------");
System.out.println("加密之前src:" + src);
String keyHex = "0489f8cda404abd3";
byte[] desEncodeByte = DesUtils.desEncode(src.getBytes(), keyHex);
System.out.println("解密后(16进制):" + Hex.encodeHexString(desEncodeByte));
byte[] desDecodeByte = DesUtils.desDecode(desEncodeByte, keyHex);
System.out.println("解密后:" + new String(desDecodeByte));
System.out.println("---------des3加解密-----------");
System.out.println("加密之前src:" + src);
String key3Hex = "926df7850bf170254f7f8a3d67bc7cdf3b98737a4664f8b3";
byte[] des3EncodeByte = DesUtils.des3Encode(src.getBytes(), key3Hex);
System.out.println("解密后(16进制):" + Hex.encodeHexString(des3EncodeByte));
byte[] des3DecodeByte = DesUtils.des3Decode(des3EncodeByte, key3Hex);
System.out.println("解密后:" + new String(des3DecodeByte));
System.out.println("---------aes加解密-------------");
System.out.println("加密之前src:" + src);
String keyAesHex = "3f16914f7349399950b5357ccbe69c25";
byte[] aesEncodeByte = AesUtils.aesEncode(src.getBytes(), keyAesHex);
System.out.println("加密后(16进制):" + Hex.encodeHexString(aesEncodeByte));
byte[] aesDecodeByte = AesUtils.aesDecode(aesEncodeByte, keyAesHex);
System.out.println("解密后:" + new String(aesDecodeByte));
System.out.println("---------pbe加解密---------------");
String salt = "5fd97190986585d6";//16进制盐
String password = "123456";//口令
System.out.println("加密之前src:" + src );
byte[] pbeEncodeByte = PbeUtils.encode(src.getBytes(), salt, password);
System.out.println("加密后内容:" + Hex.encodeHexString(pbeEncodeByte));
byte[] pbeDecodeByte = PbeUtils.decode(pbeEncodeByte, salt, password);
System.out.println("解密后内容:" + new String(pbeDecodeByte));
/** 非对称密钥加解密 */
String keyPublicRSAHex = "305c300d06092a864886f70d0101010500034b0030480241008ec6bea1fe0ac2d59ed209a9af2f76e0638b98c5a717a13b030624e1d637e33cdf6c4b0acb267f34d1526db0df62865f40e02d2e1c50132056705da0965656510203010001";
String keyPrivateRSAHex = "30820155020100300d06092a864886f70d01010105000482013f3082013b0201000241008ec6bea1fe0ac2d59ed209a9af2f76e0638b98c5a717a13b030624e1d637e33cdf6c4b0acb267f34d1526db0df62865f40e02d2e1c50132056705da096565651020301000102402cda2a90e129a8434b7d5823c230fafb4aca53d7e3c1fc98793eb8df69586d3dfd5a18b4adbb7c5f37f98eea7e2a1f4573ca4053ef602836bcac0474ecaa8b41022100d65b91d0ee96f05c93a018a21177e11ff07a9f03c0e458fb3dfb75dea249acc5022100aa834b2bf45556b4f8ffc9a473a28ec56b28c63e0e932c9ae9c4b865472af41d022100957dcce681ce2018e01771b66d2a468568c78b6829b8d65979338a5356a8bce5022044f524097a9ea89a37b8fa4b4f988634c0c994a2b43240efc56a91482427f2e1022100b70e6871fd56561b7617ceb17831ecf41a3458f81cfebfb27fbff728a00b0a37";
System.out.println("--------------RSA加解密-私钥加密,公钥解密--------------------------------------------------");
System.out.println("源字符串内容src:" + src);
byte[] rsaEncodePrivateByte = RsaUtils.rsaEncodePrivate(src.getBytes(), keyPrivateRSAHex);
System.out.println("加密后内容(16进制):" + Hex.encodeHexString(rsaEncodePrivateByte));
byte[] rsaDecodePublicByte = RsaUtils.rsaDecodePublic(rsaEncodePrivateByte, keyPublicRSAHex);
System.out.println("解密后内容:" + new String(rsaDecodePublicByte));
System.out.println("--------------RSA加解密-公钥加密,私钥解密--------------------------------------------------");
System.out.println("源字符串内容src:" + src);
byte[] rsaEncodePublicByte = RsaUtils.rsaEncodePublic(src.getBytes(), keyPublicRSAHex);
System.out.println("加密后内容(16进制):" + Hex.encodeHexString(rsaEncodePublicByte));
byte[] rsaDecodePrivateByte = RsaUtils.rsaDecodePrivate(rsaEncodePublicByte, keyPrivateRSAHex);
System.out.println("解密后内容:" + new String(rsaDecodePrivateByte));
System.out.println("--------------------RSA私钥签名,验证签名----------------------");
System.out.println("源字符串内容src:" + src);
byte[] rsaSignByte = RsaUtils.rsaSign(src, keyPrivateRSAHex);
System.out.println("签名后字符串(16进制):" + Hex.encodeHexString(rsaSignByte));
Boolean rsaSignVerify = RsaUtils.rsaSignVerify(src, rsaSignByte, keyPublicRSAHex);
System.out.println("签名验证:" + rsaSignVerify);
System.out.println("--------------------HD加解密-------------------------");
System.out.println("生成密钥流程开始");
HdUtils.flowGenerateKey();
System.out.println("生成密钥流程结束");
String sendKeyPrivateHex = "3081d202010030819706092a864886f70d010301308189024100fca682ce8e12caba26efccf7110e526db078b05edecbcd1eb4a208f3ae1617ae01f35b91a47e6df63413c5e12ed0899bcd132acd50d99151bdc43ee737592e170240678471b27a9cf44ee91a49c5147db1a9aaf244f05a434d6486931d2d14271b9e35030b71fd73da179069b32e2935630e1c2062354d0da20a6c416e50be794ca4020201800433023100af3b3510e5d2efba428c538eb3f5060d47273f74ccbb068ecbc9eac44c5b6c628d5485a0fcff191235aa3dbd24bb3894";
String sendPublicKeyHex = "3081df30819706092a864886f70d010301308189024100fca682ce8e12caba26efccf7110e526db078b05edecbcd1eb4a208f3ae1617ae01f35b91a47e6df63413c5e12ed0899bcd132acd50d99151bdc43ee737592e170240678471b27a9cf44ee91a49c5147db1a9aaf244f05a434d6486931d2d14271b9e35030b71fd73da179069b32e2935630e1c2062354d0da20a6c416e50be794ca40202018003430002402d66070a56b36fef7164b598639cd9f4e5215b7f199de428b8c05121ec99300d1874e56f91e54d66699eb2f82ba3ab1c431d54e7cabcf9060359c193fa5bd3f0";
String recvPrivateKeyHex = "3081d202010030819706092a864886f70d010301308189024100fca682ce8e12caba26efccf7110e526db078b05edecbcd1eb4a208f3ae1617ae01f35b91a47e6df63413c5e12ed0899bcd132acd50d99151bdc43ee737592e170240678471b27a9cf44ee91a49c5147db1a9aaf244f05a434d6486931d2d14271b9e35030b71fd73da179069b32e2935630e1c2062354d0da20a6c416e50be794ca4020201800433023100e6a1ff78d63819402d4542fe69ade3c70c3da198fb6721dc6cb0b90f95b60d7385d01c72fa1f2614c5f4c85b617fc519";
String recvPublicKeyHex = "3081e030819706092a864886f70d010301308189024100fca682ce8e12caba26efccf7110e526db078b05edecbcd1eb4a208f3ae1617ae01f35b91a47e6df63413c5e12ed0899bcd132acd50d99151bdc43ee737592e170240678471b27a9cf44ee91a49c5147db1a9aaf244f05a434d6486931d2d14271b9e35030b71fd73da179069b32e2935630e1c2062354d0da20a6c416e50be794ca402020180034400024100956bd580fea03c47977d23f30eb85f0a19ee64b31628ea452c5ec57db264ca0d409abdf1353e91cf1a5e4f2a34be98b4f08484667789a7d9f97a22564bd7b6fc";
System.out.println("源字符串内容src:" + src);
byte[] hdEncodeByte = HdUtils.encode(src.getBytes(), sendKeyPrivateHex, recvPublicKeyHex);
System.out.println("加密后内容(16进制:)" + Hex.encodeHexString(hdEncodeByte));
byte[] hdDecodeByte = HdUtils.decode(hdEncodeByte, sendPublicKeyHex, recvPrivateKeyHex);
System.out.println("解密后内容:" + new String(hdDecodeByte));
}
}
网友评论