JAVA 加密方法

本文详细介绍了RSA非对称加密算法的实现过程,包括密钥对的生成、公钥加密及私钥解密等核心步骤,并提供了具体的Java代码示例。此外,还介绍了如何使用MD5算法进行数据加密。

1. RSA非对称加密

生成密钥对代码:

//生成秘钥对
    public static KeyPair getKeyPair() throws NoSuchAlgorithmException {
        KeyPairGenerator keyPairGenerator= KeyPairGenerator.getInstance("RSA");
        keyPairGenerator.initialize(1024);
        return keyPairGenerator.generateKeyPair();
    }

    //获取公钥字符串
    public static String getPublicKeyString(PublicKey key){
        return new String(Base64.getEncoder().encode(key.getEncoded()));
    }
    //获取私钥字符串
    public static String getPrivateKeyString(PrivateKey key){
        return new String(Base64.getEncoder().encode(key.getEncoded()));
    }

公钥加密

    //公钥加密
    public static String encrypt(String content,String publicKeyString)throws Exception{
        PublicKey publicKey = getPublicKey(publicKeyString);
        byte[] contentByte = content.getBytes();
        byte[] result = encrypt(contentByte,publicKey);
        return Base64.getEncoder().encodeToString(result);
    }
    private static byte[] encrypt(byte[] content, PublicKey publicKey) throws Exception{
        Cipher cipher=Cipher.getInstance("RSA");//java默认"RSA"="RSA/ECB/PKCS1Padding"
        cipher.init(Cipher.ENCRYPT_MODE, publicKey);
        return cipher.doFinal(content);
    }

私钥解密

 //解密
    private static byte[] decrypt(byte[] content, PrivateKey privateKey) throws Exception{
        Cipher cipher=Cipher.getInstance("RSA");
        cipher.init(Cipher.DECRYPT_MODE, privateKey);
        return cipher.doFinal(content);
    }
    //将base64编码后的私钥字符串转成PrivateKey实例
    private static PrivateKey getPrivateKey(String privateKey) throws Exception{
        byte[ ] keyBytes= Base64.getDecoder().decode(privateKey.getBytes());
        PKCS8EncodedKeySpec keySpec=new PKCS8EncodedKeySpec(keyBytes);
        KeyFactory keyFactory=KeyFactory.getInstance("RSA");
        return keyFactory.generatePrivate(keySpec);
    }

2. MD5加密

 Md5PasswordEncoder encoder = new Md5PasswordEncoder();
        String result = encoder.encodePassword(“str”,null).toUpperCase();
        result = encoder.encodePassword(result.substring(1,11),null).toUpperCase();
        

 

转载于:https://www.cnblogs.com/pangkang/p/9407687.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值