是否可以将 BigInteger 转换为接口键?
http://docs.oracle.com/javase/7/docs/api/java/security/Key.html
我正在尝试实现 RSA 算法,并自己生成密钥,而不是使用 KeyPairGenerator 生成密钥。但是,当使用 Cipher 加密我的消息时,它需要一个密钥。我曾尝试将 BigInteger 转换为 Key,但这不起作用。
是否可以将 BigInteger 转换为接口键?
http://docs.oracle.com/javase/7/docs/api/java/security/Key.html
我正在尝试实现 RSA 算法,并自己生成密钥,而不是使用 KeyPairGenerator 生成密钥。但是,当使用 Cipher 加密我的消息时,它需要一个密钥。我曾尝试将 BigInteger 转换为 Key,但这不起作用。
RSAPublicKey
这是从模数和公共指数创建实现的示例。
KeyFactory factory rsa = KeyFactory.getInstance("RSA");
BigInteger n = ... ; /* modulus */
BigInteger e = ... ; /* public exponent */
RSAPublicKeySpec spec = new RSAPublicKeySpec(n, e);
RSAPublicKey pub = (RSAPublicKey) factory.generatePublic(spec);
Cipher enc = Cipher.getInstance("RSA");
enc.init(Cipher.WRAP_MODE, pub);
byte[] encryptedContentKey = enc.wrap(secret);
一个 RSA 密钥对是一个私钥和一个公钥,每一个都包含多个BigInteger
对象形式的数字。一对中的每个密钥共享相同的“模数”。公钥有一个“公共指数”,而私钥有一个“私人指数”。为了计算效率,私钥通常以“中国剩余定理形式”存储,其中包括附加数字。
如果要加密,则需要将 a传递PublicKey
给init()
.Cipher
如果要解密,则需要将 a传递PrivateKey
给init()
.Cipher
(一些提供程序允许您使用 aCipher
来执行签名操作,并在您反转密钥时使用正确的填充,但是当Signature
类更清楚地表达您的意图时,不建议或不需要这样做。)