获取异常java.security.InvalidKeyException:格式错误:需要原始字节

获取异常java.security.InvalidKeyException:格式错误:需要原始字节,java,encryption,aes,rsa,public-key-encryption,Java,Encryption,Aes,Rsa,Public Key Encryption,我想写一个程序,用私钥对文件进行加密、签名和解密。运行下面的程序时,我收到以下错误- 线程“main”java.security.InvalidKeyException:格式错误:在com.sun.crypto.provider.CipherCore.getKeyBytes(CipherCore.java:623)com.sun.crypto.provider.CipherCore.init(CipherCore.java:494)atcom.sun.crypto.provider.Cipher

我想写一个程序,用私钥对文件进行加密、签名和解密。运行下面的程序时,我收到以下错误-

线程“main”
java.security.InvalidKeyException
:格式错误:在
com.sun.crypto.provider.CipherCore.getKeyBytes(CipherCore.java:623)
com.sun.crypto.provider.CipherCore.init(CipherCore.java:494)at
com.sun.crypto.provider.CipherCore.init(CipherCore.java:458)
at
com.sun.crypto.provider.aesciper.engineInit(aesciper.java:307)
at
javax.crypto.Cipher.init(Cipher.java:1226)
at
javax.crypto.Cipher.init(Cipher.java:1166)
at
Main.Main(Main.java:87)

我的代码 发生异常的特定行是:

aes.init(Cipher.ENCRYPT_MODE, (Key)enc_key.getPublic()); 

AES是一种对称密码算法,因此它需要对称密钥,而不是公钥

要创建对称密钥,请使用helper类

您的加密方案应创建一个随机位序列作为AES密码的密钥材料,然后使用公钥/私钥对该密钥材料进行加密/解密


消息本身应该用AES密钥加密/解密。

堆栈跟踪明确提到发生异常的行。请指出这是代码中的哪一行,因为您发布的代码片段有点长。您好,很抱歉。。我在代码中做了标记。行是aes.init(Cipher.ENCRYPT_MODE,(Key)enc_Key.getPublic());下次,请提供否决投票的原因。@user2993422。不,你没有。这是为了提醒本网站的其他用户在点击前要三思而后行。嗨,我不太明白。。我在下面的行中使用secretKey规范制作了一个对称密钥-key-key=newsecretkeyspec(key_字节,“AES”);我是否应该将出现错误的行更改为-aes.init(Cipher.ENCRYPT_MODE,key);如果我这样做,程序就会运行,但我真的不知道它是否正常。。谢谢你的帮助:)@user2993422。是的,这是使用对称密钥的方法。如果要保护该对称密钥,现在可以使用公钥对其进行加密,并使用私钥进行解密。
aes.init(Cipher.ENCRYPT_MODE, (Key)enc_key.getPublic());