美文网首页
Java 常用加解密整理大全-HD,RSA,DES,DES3,A

Java 常用加解密整理大全-HD,RSA,DES,DES3,A

作者: 任重而道元 | 来源:发表于2018-10-14 00:15 被阅读35次

整理所有的加解密相关的工具,并放到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));
        
        
        
        
        
    }
    
    
}


相关文章

网友评论

      本文标题:Java 常用加解密整理大全-HD,RSA,DES,DES3,A

      本文链接:https://www.haomeiwen.com/subject/xynaaftx.html