1
我需要首先使用SHA-1摘要算法对字符串进行数字签名,然后应用RSA算法,使用PrivateKey对其进行签名。我已经在我的数据库中存储了PrivateKey作为base64中的数据类型char(250)。我的问题是,我不知道如何将它转换成一个专用密钥将其用于签署:对我应用了SHA-1散列算法将字节[]转换为java中的PrivateKey以进行数字签名
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.ENCRYPT_MODE, privateKey);
byte[] cipherText = cipher.doFinal(digest);
文摘是一个字节数组:
MessageDigest md = MessageDigest.getInstance("SHA-1");
byte [] ba = cadena.getBytes();
byte [] digest = md.digest(ba);
这是我想到的解决方案,但如果有人有更好的解决方案,我将不胜感激。
什么是关键存储类型64底层编码的? – user1084509
@ user1084509我不认为密钥库类型与编码有任何关系。编码是将一种形式的数据转换为另一种形式的手段。您的密钥库类型可能是[本文(链接)]中提到的其中一种类型(http://docs.oracle.com/javase/1.4.2/docs/guide/security/CryptoSpec.html#AppA) – srkavin
好的,谢谢你,现在我明白了。我有关于这一行的另一个问题:KeyStore.PrivateKeyEntry pkEntry =(KeyStore.PrivateKeyEntry)ks.getEntry(PRIVATE_KEY_ALIAS,password); ...密码预计是类型KeyStore.ProtectionParameter,我该如何做这种转换?我的密码是一组字符或一个字符串。 – user1084509