我试图使用java bouncy castle库来使用RSA来解密和解密一个短字节数组.我做了以下步骤:
我注意到原始和解密的数据数组不一样.解密的数据数组缺少第一个条目,因此比原始数据数组短1.仅当数据数组的第一个条目为"0"时才会发生这种情况.为什么会这样?解密不应该返回相同的数据数组吗?或者我对图书馆的假设,使用和理解是错误的?
这里是完整的测试用例(带有导入以便更好地理解):
import static org.junit.Assert.assertTrue;
import java.io.IOException;
import java.math.BigInteger;
import java.security.*;
import java.security.spec.RSAKeyGenParameterSpec;
import java.util.Arrays;
import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.NoSuchPaddingException;
import org.bouncycastle.crypto.DataLengthException;
import org.bouncycastle.crypto.InvalidCipherTextException;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import org.bouncycastle.jce.provider.JDKKeyPairGenerator;
import org.bouncycastle.util.encoders.Hex;
import org.hive2hive.core.H2HJUnitTest;
import org.junit.Test;
public class EncryptionUtil2Test {
@Test
public void testBug() throws IOException, InvalidKeyException, IllegalBlockSizeException,
BadPaddingException, DataLengthException, IllegalStateException, InvalidCipherTextException,
NoSuchAlgorithmException, NoSuchProviderException, NoSuchPaddingException,
InvalidAlgorithmParameterException {
Security.addProvider(new BouncyCastleProvider());
// generate RSA keys
BigInteger publicExp = new BigInteger("10001", 16); // Fermat …Run Code Online (Sandbox Code Playgroud)