1

是否可以将 BigInteger 转换为接口键?

http://docs.oracle.com/javase/7/docs/api/java/security/Key.html

我正在尝试实现 RSA 算法,并自己生成密钥,而不是使用 KeyPairGenerator 生成密钥。但是,当使用 Cipher 加密我的消息时,它需要一个密钥。我曾尝试将 BigInteger 转换为 Key,但这不起作用。

4

1 回答 1

0

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传递PublicKeyinit().Cipher

如果要解密,则需要将 a传递PrivateKeyinit().Cipher

(一些提供程序允许您使用 aCipher来执行签名操作,并在您反转密钥时使用正确的填充,但是当Signature类更清楚地表达您的意图时,不建议或不需要这样做。)

于 2012-04-22T21:48:20.217 回答