每个人都在讨论密码中的填充方案,但是需要传递给密码的实际字符串是什么?我不在乎它们是对称的还是非对称的,我只想要一个可能的值列表.
我的问题:
我的加密代码适用于64个以下的字符.但如果它超过64个字符,我得到以下错误
javax.crypto.IllegalBlockSizeException: input must be under 64 bytes
Run Code Online (Sandbox Code Playgroud)
加密代码
cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding);
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
encryptedBytes = cipher.doFinal(message.getBytes(StandardCharsets.UTF_8));
rsaEncrypted= Base64.encodeToString(encryptedBytes, Base64.NO_WRAP);
Run Code Online (Sandbox Code Playgroud)
密钥生成代码
KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA");
keyGen.initialize(512);
KeyPair keypair = keyGen.genKeyPair();
PublicKey pub = keypair.getPublic();
byte[] pubs = pub.getEncoded();
Run Code Online (Sandbox Code Playgroud)
我的问题:
有可能用512位密钥加密大文本吗?我的代码中有错误吗?
注意:如果有人想要完整的代码,我会稍后更新.
我正在创建一个Web服务,用于存储用户在线公钥以及加密消息的列表.我的最终目标是端到端加密.
我最初认为这很容易 - "哦,OpenSSL和RSA私钥/公钥非对称加密很棒." 假.RSA只会加密一小部分数据,大概是来回传递一个常规的对称密钥.
好的,所以我试着在网上找到解决方案.其中大多数任结束,没有一个有效的实施例或在使用命令行指出,所有这些似乎过度和不完整的.
是否有办法使用终端到端到端的数据加密与非对称密钥的方式,或者是这一切是个人白日梦?PHP中的 OpenSSL已经有了一种方法可以做到这一点,而且它很麻烦,但它确实有效.
我在这里找不到一些方法吗?
encryption ×3
java ×3
cryptography ×2
.net ×1
android ×1
c# ×1
jce ×1
mono ×1
padding ×1
rsa ×1