相关疑难解决方法(0)

分解RSA/ECB/OAEPWITHSHA-256ANDMGF1PADDING

所以Java有一个名为的模式RSA/ECB/OAEPWITHSHA-256ANDMGF1PADDING.那有什么意思?

RFC3447,公钥加密标准(PKCS)#1:RSA加密规范版本2.1,第7.1.2解密操作说Hash和MGF都是RSAES-OAEP-DECRYPT的选项.MGF是它自己的功能,在B.2.1节MGF1中定义,并且它也有自己的Hash"选项".

也许RSAES-OAEP-DECRYPT和MGF1中的Hash"选项"应该是相同的,或者它们可能不是,我不清楚.如果它们是那么我RSA/ECB/OAEPWITHSHA-256ANDMGF1PADDING想当你有这意味着sha256应该用于两者.但是如果它们不应该是相同的那么你可以将sha256用于RSAES-OAEP-DECRYPT,例如,sha1用于MGF1.如果是这种情况那么sha256应该用于什么功能呢?什么哈希算法应该用于其他功能?

欧洲央行在这方面的意义是什么?ECB是对称分组密码模式.电子密码本.也许它应该是指Java如何处理比模数更大的明文?就像将明文拆分成与模数一样大的块,然后用RSA加密每个块并将它们连接在一起?我只是猜猜..

java encryption cryptography rsa

17
推荐指数
1
解决办法
2万
查看次数

RSA / ECB / OAEPWithSHA-256AndMGF1Padding但使用SHA-256的MGF1吗?

我在Oracle的Java标准加密提供程序中发现了困难的方法

Cipher cipher = Cipher.getInstance("RSA/ECB/OAEPWithSHA-256AndMGF1Padding");
Run Code Online (Sandbox Code Playgroud)

使用以SHA-1实例化的MFG1;SHA-256仅用于对标签进行哈希处理(实际上是空的)。我发现在MFG1中实际使用SHA-256的唯一解决方案(得到该答案注释的帮助)是使用以下替代形式Cipher.init

cipher.init(Cipher.DECRYPT_MODE, privKey, new OAEPParameterSpec(
    "SHA-256", "MGF1", MGF1ParameterSpec.SHA256, PSource.PSpecified.DEFAULT
));
Run Code Online (Sandbox Code Playgroud)

问:有没有转变Cipher.getInstance会认识到,与类似的效果"RSA/ECB/OAEPWithSHA-256AndMGF1Padding",除了与MGF1使用SHA-256?

java cryptography

7
推荐指数
1
解决办法
2861
查看次数

Node.js 中 Java 的 RSA/ECB/OAEPWithSHA-256AndMGF1Padding 等效项

数据解密将使用RSA/ECB/OAEPWithSHA-256AndMGF1Padding算法在JAVA中运行。RSA/ECB/OAEPWithSHA-256AndMGF1Padding所以我必须使用相当于中的算法用公钥加密数据node.js

我尝试crypto.publicEncrypt(key, buffer)使用 crypto.constants.RSA_PKCS1_OAEP_PADDING ,它与上述算法不相似。所以我需要相当于“RSA/ECB/OAEPWithSHA-256AndMGF1Padding”的算法或如何在node.js中实现相同的效果

java encryption node.js cryptojs

6
推荐指数
1
解决办法
7667
查看次数

加密(模式和填充)

我的任务是编写一个涉及加密的小型Java控制台应用程序.我不熟悉加密,所以我必须先做一些阅读.到目前为止,给出的高级要求是AES-256应该用于生成一次性密钥来加密文件.

之后,应使用收件人的公钥(RSA-2048)来加密该AES-256一次性密钥.然后,加密文件和加密的一次性AES-256密钥将被压缩并发送给收件人.

根据我对读取加密和解密的理解,除了算法(RSA,AES等)之外,还有称为模式和填充的东西.例如,以下代码将RSA指定为算法,ECB模式和PKCS1Padding.

Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
Run Code Online (Sandbox Code Playgroud)

在加密和解密中必须使用相同的算法,模式和填充.因此,我可以向用户询问他们想要的模式和填充是否合理?

我注意到Cipher cipher = Cipher.getInstance("RSA")似乎使用了ECB的默认模式和PKCS1Padding的填充,因此这行代码与上面相同.那么可以假设ECB模式和PKCS1Padding模式将默认用于RSA-2048吗?

java encryption cryptography public-key-encryption

5
推荐指数
1
解决办法
4494
查看次数

使用 RSA/ECB/OAEPWithSHA-256AndMGF1Padding 在 Java 中加密,使用 OAEPSHA256 Padding 在 C# 中解密

我遇到过 Java 程序使用 RSA/ECB/OAEPWithSHA-256AndMGF1Padding 加密文本的情况。

我需要在 C# 中解密它。

Java 中的加密和解密工作正常。

使用 RSA/ECB/OAEPWithSHA-1AndMGF1Padding 在 Java 中加密并在 C# 中解密工作得非常好。

但是,使用 Java 中的 RSA/ECB/OAEPWithSHA-256AndMGF1Padding 加密和 C# 中的 OaepSHA256 解密会出现错误:参数不正确。

用于加密的Java代码:

public static String encrypt(KeyPair keypair, String data) throws NoSuchAlgorithmException, NoSuchPaddingException,
            InvalidKeyException, IllegalBlockSizeException, BadPaddingException, UnsupportedEncodingException {
        Cipher c = Cipher.getInstance("RSA/ECB/OAEPWithSHA-256AndMGF1Padding");
        //Cipher c = Cipher.getInstance("RSA/ECB/OAEPWithSHA-1AndMGF1Padding");
        c.init(Cipher.ENCRYPT_MODE, keypair.getPublic());
        return Base64.getEncoder().encodeToString(c.doFinal(data.getBytes()));
    }
Run Code Online (Sandbox Code Playgroud)

解密的C#代码:

public string DecryptRsa(byte[] encryptedBytes, X509Certificate2 x509Certificate2, RSAEncryptionPadding rSAEncryptionPadding)
        {
            var text = string.Empty;

            using (RSACng csp = (RSACng)x509Certificate2.GetRSAPrivateKey())
            {

                byte[] bytesDecrypted = csp.Decrypt(encryptedBytes, rSAEncryptionPadding); …
Run Code Online (Sandbox Code Playgroud)

c# encryption sha256

4
推荐指数
1
解决办法
2559
查看次数