代码https://play.golang.org/p/CUEqjsJq5c
错误:
panic: crypto/rsa: message too long for RSA public key size
goroutine 1 [running]:
panic(0x4a6d80, 0xc420010420)
/usr/local/go/src/runtime/panic.go:500 +0x1a1
main.main()
/tmp/sample.go:28 +0xfa
文件大小811字节(用于测试加密自源文件)。我想加密一些更大的文件,1。。500 mb。我可以用RSA来做吗?或者需要使用其他方法吗?
如果不想对文件进行分块,可采用以下方法:
R
,EF=Sym(F,R)
,R
,以创建ER=ASym(公钥,R)
,EF
与ER
一起发送
加密:
+---------------------+ +--------------------+
| | | |
| generate random key | | the large file |
| (R) | | (F) |
| | | |
+--------+--------+---+ +----------+---------+
| | |
| +------------------+ |
| | |
v v v
+--------+------------+ +--------+--+------------+
| | | |
| encrypt (R) with | | encrypt (F) |
| your RSA public key | | with symmetric key (R) |
| | | |
| ASym(PublicKey, R) | | EF = Sym(F, R) |
| | | |
+----------+----------+ +------------+-----------+
| |
+------------+ +--------------+
| |
v v
+--------------+-+---------------+
| |
| send this files to the peer |
| |
| ASym(PublicKey, R) + EF |
| |
+--------------------------------+
解密:
+----------------+ +--------------------+
| | | |
| EF = Sym(F, R) | | ASym(PublicKey, R) |
| | | |
+-----+----------+ +---------+----------+
| |
| |
| v
| +-------------------------+-----------------+
| | |
| | restore key (R) |
| | |
| | R <= ASym(PrivateKey, ASym(PublicKey, R)) |
| | |
| +---------------------+---------------------+
| |
v v
+---+-------------------------+---+
| |
| restore the file (F) |
| |
| F <= Sym(Sym(F, R), R) |
| |
+---------------------------------+
RSA只能加密小于(或等于)密钥长度的数据。
答案是使用对称算法(如AES)对数据进行加密,AES用于加密大小数据。
如果需要RSA公钥/私钥对,请使用RSA加密对称(AES)密钥。这被称为混合加密,本质上是HTTPS加密数据的方式。
但是,除非需要公钥/私钥对,否则RSA可能没有必要加密对称密钥。在一般情况下,只使用对称(AES)和该密钥。公钥/私钥对的用例是什么?
我正在尝试实现RSA算法。我想加密一个图像。问题是当解密完成时,文件无法读取。我不知道问题到底出在哪里。这是RSA的实现: 这是主要方法: 这是加密方法: 这是解密方法: 阅读和写作的方法如下所述:http://www.java2s.com/Code/Java/File-Input-Output/Readfiletobytearrayandsavebytearraytofile.htm
我的问题是: 我的加密代码在64个字符以下运行良好。但如果超过64个字符,我会得到以下错误 加密代码 密钥生成代码 我的问题是: 可以用512位密钥加密大文本吗?我的密码有错吗? 注意:如果有人想要完整的代码,我会稍后更新。
文件解密后,输出包含一些不相关的额外值。为什么结果中有额外的数据?
问题内容: 我正在使用PyCrypto通过RSA实现文件加密。 我知道这有点不对,首先是因为RSA速度很慢,其次是因为PyCrypto RSA只能加密128个字符,因此您必须以128个字符的块来爆炸文件。 到目前为止的代码是: 所以我的问题是:是否有更好的方法在文件上使用私钥/公钥加密? 我听说过Mcrypt和OpenSSL,但是我不知道它们是否可以加密文件。 问题答案: 公钥加密通常仅用于少量数
问题内容: 我需要用openssl生成的和密钥替换从Unix到Java代码的加密和解密步骤 我生成密钥 我在Unix中使用键(我需要在Java中执行) 这是我的尝试 但它不起作用,PKCS8EncodedKeySpec / X509EncodedKeySpec不正确…但是我不知道该放什么 问题答案: 我认为您在读取PEM文件时遇到问题。JPA不直接支持PEM格式。您有两种选择,要么将它们转换为DE
问题内容: 我正在尝试编写一个使用RSA密钥对加密和解密纯文本文件的实用程序。RSA密钥是使用ssh-keygen生成的,并照常存储在.ssh中。 我在理解如何使用Go语言crypto和crypto / rsa软件包时遇到问题吗?有关这些文档的文档很少(甚至更多,因为我对加密还不熟悉),并且示例很少。我检查了rsa_test.go文件是否有任何线索,但这只会使我更加困惑。 简而言之,我试图从.ss