我在尝试初始化RSA密码时遇到Scala错误:
我正在尝试读取包含公钥和私钥的PEM文件。在Bouncy城堡中读取pem文件时,我在初始化中传递与key相同的信息时出错。
我的PEM文件:
-----BEGIN RSA Public Key-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAl4pTSyS0xsC1HYGsw03+
v48OvOOkuamnEIDwXtYFdYD30GOT1JbKA9xTccFlYuARePizUO9snMzYvowOsAb+
Ichp27QgWbRq7oe+VKJ2yeKbujC6LUO/7DS/TLBGZ6V+q5X+4lFgnVrppFXZXCvp
TiwY5CDraQXexp/4PfIbutyP+AIPVshpDD4CKpCHlTyP/JUK06I6km/AYgIfPsFq
m1Fp+iTh5xu3wX5Ys3G5QkC22k19gG2+dFMm26dtoEemfkAWk7DXfFHYxWSLy1D3
aaZOIOB903bP4MK5bF9CkB//8HwPMCYE6J2XX2xTJP4X3wIdVeLGUMwu1uNZHLeR
UwIDAQAB
-----END RSA Public Key-----
错误需要哪些更改
我的代码:
import org.apache.commons.io.FileUtils
import org.bouncycastle.util.io.pem.PemReader
import java.io.{File, FileOutputStream, FileReader, IOException}
import java.nio.charset.StandardCharsets
import java.security._
import java.security.interfaces.RSAPublicKey
import java.security.spec.InvalidKeySpecException
import java.security.spec.PKCS8EncodedKeySpec
import java.security.spec.X509EncodedKeySpec
import javax.crypto.Cipher
import java.security.KeyFactory
object RSA_encrypt_decrypt extends App {
val file = "/home/roxane/Music/ss_key"
val readfile = new File(file)
val key = FileUtils.readFileToString(readfile, "UTF-8")
val sym_key = key.getBytes(StandardCharsets.UTF_8)
println(sym_key)
val pubfile = "/home/roxane/Music/public.pem"
val readpubfile = new FileReader(pubfile)
val prvfile = "/home/roxane/Music/private.pem"
val readprvfile = new FileReader(prvfile)
val publickey = RSAKey(readpubfile,"PUBLIC")
val pipher = Cipher.getInstance("RSA/ECB/OAEPwithSHA1andMGF1Padding")
pipher.init(Cipher.ENCRYPT_MODE, publickey)
def RSAKey(file: FileReader, key: String) :Any = {
key.toUpperCase() match {
case "PUBLIC" => {
// Generate public key from pem file
val factory = KeyFactory.getInstance("RSA")
val pubpemReader = new PemReader(file) // readpubfile
val pubpemObject = pubpemReader.readPemObject()
val content = pubpemObject.getContent()
val pubKeySpec = new X509EncodedKeySpec(content)
val pubkey = factory.generatePublic(pubKeySpec)
return factory.generatePublic(pubKeySpec).asInstanceOf[RSAPublicKey]
}
}
}
错误:
重载方法值初始化(x1美元:Int,x2美元:java.security.cert.证书)单位(x1美元:Int,x2美元:java.security.密钥)单位不能应用于(Int,任何)pipher.init(密码。ENCRYPT_MODE,公钥)
我正在尝试为工厂编写与scala等价的代码。generatePublic(pubKeySpec)。A安装[RSAPublicKey],如下所示
rsaPublicKey = (RSAPublicKey) factory.generatePublic(pubKeySpec);
也许这就是我错的地方。
问题已解决。我对Java代码使用了正确的类型转换:问题在于生成RSAKey的方法签名。右签名如下:
def RSAKey(file: FileReader, key: String) :Key
我使用RSA_public_encrypt函数发送加密数据到套接字。我正在读取公钥。使用"pkey=PEM_read_PUBKEY(f, NULL, NULL, NULL);"函数的PEM文件。从上面的函数中检索的pkey是类型EVP_PKEY*,我不能在函数RSA_public_encrypt中使用。(RSA_public_encrypt使用RSA*类型密钥) 如何将EVP_PKEY*PKEY转
问题内容: 我该如何等效于以下c ++代码? 我看过Go rsa软件包 。看起来EncryptPKCS1v15()可能等同于RSA_private_encrypt()。但是除了GenerateKey()之外,我看不到如何创建一个PrivateKey对象,该对象(可以通过查看源代码来确认)使用随机质数生成一个。 我是否需要弄清楚如何解码PEM文件,以便提取出PrivateKey字段的值? 更新: 与
我使用的是Web加密,更具体地说,这些示例是:https://github.com/diafygi/webcrypto-examples/#rsa-oaep 更新
我试图用JavaScript加密一个短字符串,用Java解密它。解密失败,我认为这是因为两个平台之间的块模式和/或填充不同。我尝试在Java和JavaScript中加密相同的字符串,结果不同,这表明确实存在差异。以下是创建键的Java代码: 这是我用来测试加密的Java代码: 我将公钥发送到JavaScript进程,并将其转换为ArrayBuffer,变量名为publicKey。我已经验证了Jav
错误:正在执行热重新加载。。。正在将文件同步到IA Emulator上的设备AOSP。。。在1021ms内重新加载了707个库中的8个。I/flatter(7395):“Future”的实例E/flatter(7395):[ERROR:flatter/lib/ui/ui\u dart\u state.cc(157)]未处理的异常:FileSystemException:无法打开文件,路径=“Fut
我正在尝试实现RSA算法。我想加密一个图像。问题是当解密完成时,文件无法读取。我不知道问题到底出在哪里。这是RSA的实现: 这是主要方法: 这是加密方法: 这是解密方法: 阅读和写作的方法如下所述:http://www.java2s.com/Code/Java/File-Input-Output/Readfiletobytearrayandsavebytearraytofile.htm