gpt4 book ai didi

java - 使用 SpongyCaSTLe 的 RSA

转载 作者:行者123 更新时间:2023-11-29 05:27:21 24 4
gpt4 key购买 nike

我对加密的了解非常基础,对于我的任何无知,我深表歉意。

在 Android 应用程序中,我目前正在尝试使用 SpongyCastle library 来模拟此命令的执行。和标准的 java.security 库:

echo 'test' | openssl rsautl -encrypt -pubin -inkey test.pub | base64 > encrypted_file

应该注意的是,命令中的文件读写不会并且我有我的公钥(即test.pub ) 作为我的代码中的 Base64 编码字符串 base64key

我尝试了以下方法,但确定它不起作用:

static {
Security.insertProviderAt(new BouncyCastleProvider(), 1);
}

//...more code here

byte[] pka = Base64.decode(base64key);

X509EncodedKeySpec x = new X509EncodedKeySpec(pka);
PublicKey publicKey = KeyFactory.getInstance("RSA").generatePublic(x);

byte[] testToByte = "test".getBytes("UTF8");

KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA");
keyGen.initialize(2048);

Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.ENCRYPT_MODE, publicKey);

byte[] cipherText = cipher.doFinal(testToByte);

String encrypted = Base64.encode((new String(cipherText, "UTF8").toString().getBytes()))

我知道这很遥远,但我不确定该转向哪里。任何帮助,将不胜感激。

最佳答案

最终使用以下方法解决了这个问题:

private void stripHeaders(){

public_key = public_key.replace("-----BEGIN PUBLIC KEY-----", "");
public_key = public_key.replace("-----END PUBLIC KEY-----", "");

}

public byte[] encryptWithPublicKey(String encrypt) throws Exception {
byte[] message = encrypt.getBytes("UTF-8");
stripHeaders();
PublicKey apiPublicKey= getRSAPublicKeyFromString();
Cipher rsaCipher = Cipher.getInstance("RSA/None/PKCS1Padding", "SC");
rsaCipher.init(Cipher.ENCRYPT_MODE, apiPublicKey);
return rsaCipher.doFinal(message);
}

private PublicKey getRSAPublicKeyFromString() throws Exception{
KeyFactory keyFactory = KeyFactory.getInstance("RSA", "SC");
byte[] publicKeyBytes = Base64.decode(public_key.getBytes("UTF-8"), Base64.DEFAULT);
X509EncodedKeySpec x509KeySpec = new X509EncodedKeySpec(publicKeyBytes);
return keyFactory.generatePublic(x509KeySpec);
}

关于java - 使用 SpongyCaSTLe 的 RSA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22228711/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com