- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
哪里可以找到不使用“NoPadding”的 RSA 加密示例?
--更新
更好:如何使此 SSCCE 正确运行而不抛出“RSA block 数据过多”异常?
import java.math.BigInteger;
import java.security.KeyFactory;
import java.security.interfaces.RSAPrivateKey;
import java.security.interfaces.RSAPublicKey;
import java.security.spec.RSAPrivateKeySpec;
import java.security.spec.RSAPublicKeySpec;
import javax.crypto.Cipher;
/**
* Basic RSA example.
*/
public class TestRSA {
public static void main(String[] args) throws Exception {
byte[] input = new byte[100];
Cipher cipher = Cipher.getInstance("RSA/None/NoPadding", "BC");
KeyFactory keyFactory = KeyFactory.getInstance("RSA", "BC");
// create the keys
RSAPublicKeySpec pubKeySpec = new RSAPublicKeySpec(new BigInteger("d46f473a2d746537de2056ae3092c451",
16), new BigInteger("11", 16));
RSAPrivateKeySpec privKeySpec = new RSAPrivateKeySpec(new BigInteger(
"d46f473a2d746537de2056ae3092c451", 16), new BigInteger("57791d5430d593164082036ad8b29fb1",
16));
RSAPublicKey pubKey = (RSAPublicKey) keyFactory.generatePublic(pubKeySpec);
RSAPrivateKey privKey = (RSAPrivateKey) keyFactory.generatePrivate(privKeySpec);
// encryption step
cipher.init(Cipher.ENCRYPT_MODE, pubKey);
byte[] cipherText = cipher.doFinal(input);
// decryption step
cipher.init(Cipher.DECRYPT_MODE, privKey);
byte[] plainText = cipher.doFinal(cipherText);
}
}
--更新:关于循环
使用:
byte[] cipherText = new byte[input.length];
for (int i = 0; i < input.length; i++) {
byte[] singleByteArray = new byte[] { input[i] };
cipherText[i] = cipher.doFinal(singleByteArray)[0];
}
无法正常工作。由于未知原因,即使输入是 0x03 数组,密文也充满了零。
最佳答案
Sun Providers Documentation SunJCE 提供程序告诉您 Cipher.getInstance() 参数中允许哪些填充规范。试试Cipher.getInstance("RSA/ECB/PKCS1PADDING");
编辑:
这不是一个填充问题,更多的是您对 RSA 在密码学中的使用方式存在误解。您可以 1) 使模数大于数据,2) 使用 Hybrid cryptosystem ,或 3) 最不希望的是将输入手动分解为每个小于模数的 block 。如果您打算使用 PKCS1 填充(通常推荐),则输入的长度不得大于 n-11 字节,其中 n 是存储 RSA 模数所需的字节数。
关于java - 不使用 NoPadding 的 RSA 示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2580473/
我使用node.js加密文件并在JAVA中解密。解密是使用“AES/GCM/Nopadding”算法在 JAVA 中完成的,它是第三方应用程序,因此我无法更改 JAVA 代码。我使用“aes-256-
Java 的 Cipher 类支持转换 listed there 。其中有几个 NoPadding 变体: AES/CBC/NoPadding (128) AES/ECB/NoPadding (128
我遵循了几个示例,并在尝试实现此处引用的 AES/GCM/NoPadding 时:https://www.strongauth.com/samplecode/GCM.java我无法加密任何包含特殊字符
我正在尝试解密使用 CryptoJS 加密的 java 文本。我在其他帖子中读到它们使用不同的默认模式和填充,因此我将它们(java/cryptojs)都设置为使用 aes/cbc/nopadding
我写了一个类,用于对任意数据进行解密和加密。 它是这样工作的:因为 AndroidKeyStore 生成的 AES key 在卸载应用程序后“丢失”,我们有一个公钥/私钥对,其中公钥包含在应用程序中。
我正在尝试用 Java 和 PHP 加密和解密 Strings,所以我使用 AES/CFB8/NoPadding,这对双方都有效。 现在我的 Cryptor 可以很好地处理拉丁字符,只要我将字符集设置
关于我的实现的信息 下面的代码片段突出显示了我当前使用 AES 密码和 CTR 操作模式实现的加密对象。 import javax.crypto.Cipher; public abstract cla
我们正在尝试在 java 7 中进行支持 AES/GCM/NoPadding 的加密,但出现异常。 找不到任何支持 AES/GCM/NoPadding 的提供商 生成密码实例的代码示例如下。 Secr
哪里可以找到不使用“NoPadding”的 RSA 加密示例? --更新 更好:如何使此 SSCCE 正确运行而不抛出“RSA block 数据过多”异常? import java.math.BigI
当我在 Android Marshmallow(Android 6.0.1) 上使用此代码时,解密正常,但当我在 Android Oreo(Android 8) 设备上运行时,解密值不同且数据不正确。
我是黑莓开发新手,需要使用 AES/ECB/NoPadding 完成加密和解密任务。我使用了下面的代码,来自互联网。 加密方式: public static byte[] encrypt( byte[
使用以下代码,我正在执行 AES 加密操作,我在不同的实例中传递相同的输入,但我得到了不同的密码。为什么会出现这种情况? public static byte[] encrypt(byte[] pl
我认为我的问题需要一些我可能不具备的基本知识。 我正在解密这样的字节数组: var cipher = CipherUtilities.GetCipher("AES/CTR/NoPadding"); c
我已经实现了 AES/CBC/PKCS5Padding 并想在 Java 1.8 中继续使用 AES/GCM/NoPadding 但一直收到 javax. crypto.AEADBadTagExcep
我需要使 C# 应用程序与 Java 应用程序兼容。 Java 应用程序使用 Cipher.getInstance("RSA/ECB/nopadding"); 初始化程序生成密码 ECB 和无填充。
String plain1= "Test"; byte[] cipher = SplashSecure.getInstance().encrypt2(plain1); String plain2 =
尝试在 Marshmallow 上加密和解密一些数据。加密效果很好,但在尝试解密时,我收到 RuntimeException,提示“iv == null”。 基本上,cipher.getIV() 和
我的 AES 加密代码有问题。我只正确加密了前 16 个字符,其余字符不正确。 下面是我的代码。 import java.io.ByteArrayOutputStream; import java.i
Cipher cipher = Cipher.getInstance("AES256/CTR/NoPadding") 以上代码抛出如下异常: Stack trace: java.security.No
我正在尝试使用 AES/GCM/NoPadding 在 Java8 中进行加密。但我无法弄清楚为什么在解密时出现 AEADBadTagException。 这是我的代码: private final
我是一名优秀的程序员,十分优秀!