gpt4 book ai didi

java - 使用java进行RSA解密失败

转载 作者:行者123 更新时间:2023-11-30 07:44:05 37 4
gpt4 key购买 nike

我的密码在 Android 应用程序中使用 RSA 加密。在服务器端,我需要解密它。,我有一个.pem文件,以及用于解密的php代码:

 function privatekey_decodeing($crypttext, $fileName, $fromjs = FALSE)
{
$key_content = file_get_contents( $fileName );
$prikeyid = openssl_get_privatekey( $key_content, "1234" );
$crypttext = str_replace(' ', '+', $crypttext);
$crypttext = base64_decode( $crypttext );
$padding = $fromjs ? OPENSSL_NO_PADDING : OPENSSL_PKCS1_PADDING;
if( openssl_private_decrypt( $crypttext, $sourcestr, $prikeyid, $padding ) )
{
return $fromjs ? rtrim( strrev( $sourcestr ), "/0" ) : "" . $sourcestr;
}
return;
}

文件名是 frivatekey 文件(.pem 文件)现在我需要使用java来解密它。我尝试过一些方法,都失败了。这是我尝试过的:

  1. 使用 .pem 文件生成 .der key 文件
  2. 读取.der文件以获取私钥
  3. 使用从.der文件读取的byte[]生成 key 文件

    public static PrivateKey generatePrivateKey(byte[] key)
    throws NoSuchAlgorithmException, InvalidKeySpecException {
    KeySpec keySpec = new PKCS8EncodedKeySpec(key);
    KeyFactory keyFactory = KeyFactory.getInstance("RSA");
    return keyFactory.generatePrivate(keySpec);
    }
  4. 解密我的密码

    public static byte[] decrypt(PrivateKey privateKey, byte[] data)
    throws Exception {
    Cipher ci = Cipher.getInstance(ALGORITHOM, DEFAULT_PROVIDER);
    ci.init(Cipher.DECRYPT_MODE, privateKey);
    return ci.doFinal(data);
    }

但是不行,不知道哪里出了问题。在 php 代码中我看到 $prikeyid = openssl_get_privatekey( $key_content, "1234");但我不知道“1234”是什么意思。这是否意味着使用“1234”来加密 key 文件?这是解密失败的原因吗?

最佳答案

$padding = $fromjs ? OPENSSL_NO_PADDING : OPENSSL_PKCS1_PADDING;

这些都是不好的选择:

请不要自行实现 RSA。您将使您的应用程序极其不安全。

推荐阅读:

关于java - 使用java进行RSA解密失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34169516/

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