当前位置:   article > 正文

RSA加密算法及java使用_rsa exponent

rsa exponent
RSA算法原理

RSA算法

  • 随机两个质数p,q。
  • n = p * q,n的值就是模(modulu),n的二进制位数就是秘钥长度,一般是1024/2048。
  • 指数e(exponent)在(1,(p-1)(q-1))之间,随机一个整数,且与(p-1)(q-1)互质,一般是65537。
  • 计算e对于(p-1)(q-1)的模反元素d,即整数d使得(e * d) mod (p-1)(q-1) = 1
  • 公钥就是(n, e),私钥就是(n, d)。
JAVA实现
// 获得公私钥对,(modulus, exponent)
public static Map<String, Object> genKeyPair() throws Exception {
        KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance(KEY_ALGORITHM);
        keyPairGen.initialize(1024);
        KeyPair keyPair = keyPairGen.generateKeyPair();
        RSAPublicKey publicKey = (RSAPublicKey) keyPair.getPublic();
        RSAPrivateKey privateKey = (RSAPrivateKey) keyPair.getPrivate();
        Map<String, Object> keyMap = new HashMap<String, Object>(2);
        keyMap.put(PUBLIC_KEY, publicKey);
        keyMap.put(PRIVATE_KEY, privateKey);
        return keyMap;
}

// 获得公钥,base64处理后
public static String getPrivateKey(Map<String, Object> keyMap) throws Exception {
        Key key = (Key) keyMap.get(PRIVATE_KEY);
        return encryptBASE64(key.getEncoded());
    }
    
public static String getPublicKey(Map<String, Object> keyMap) throws Exception {
        Key key = (Key) keyMap.get(PUBLIC_KEY);
        return encryptBASE64(key.getEncoded());
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

KeyPairGenerator类

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/440275
推荐阅读
相关标签
  

闽ICP备14008679号