gpt4 book ai didi

java - junit java.security.NoSuchAlgorithmException : Cannot find any provider supporting 问题

转载 作者:行者123 更新时间:2023-11-30 07:04:52 26 4
gpt4 key购买 nike

我将 JUnit 4 [C:\eclipse\plugins\org.junit_4.11.0.v201303080030\junit.jar] 与 Eclipse(MARS,版本:Mars Milestone 3 (4.5.0M3) Build id:20141113 -0320.

我有一些测试可以测试一个简单的类并且效果很好。但现在到了我想测试我的加密类的地步,它实现了以下加密功能:

public String encrypt(String data) {

try {

SecretKeySpec KS = new SecretKeySpec(mKeyData, "Blowfish");

Cipher cipher = Cipher.getInstance("Blowfish/CBC/ZeroBytePadding"); // PKCS5Padding
cipher.init(Cipher.ENCRYPT_MODE, KS, new IvParameterSpec(mIv));
return bytesToHex(cipher.doFinal(data.getBytes()));

} catch (InvalidKeyException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (NoSuchPaddingException e) {
e.printStackTrace();
} catch (IllegalBlockSizeException e) {
e.printStackTrace();
} catch (BadPaddingException e) {
e.printStackTrace();
} catch (InvalidAlgorithmParameterException e) {
e.printStackTrace();
}
return null;
}

Crypto 类不是子类...

public class Crypto {

所以为了测试这个类和更多的加密功能,我设计了以下单元测试:

package my.junit4.example;

import static org.junit.Assert.*;

import org.junit.Test;

public class CryptoTest {

@Test
public void testEncryption() {

Crypto myCrypto = new Crypto();

String encodedString = myCrypto.encrypt("Secret");

assertTrue("The decrypted encrypted word should deliver the original string", encodedString.equals(myCrypto.decrypt(encodedString)));
}
}

此测试失败并显示堆栈跟踪:

java.security.NoSuchAlgorithmException: Cannot find any provider supporting Blowfish/CBC/ZeroBytePaddingnull
at javax.crypto.Cipher.getInstance(Cipher.java:535) at
my.junit.example.encrypt(Crypto.java:35) at
my.junit.example.CryptoTest.testEncrypt(CryptoTest.java:14) at

这对我来说意义不大。但作为 JUnit 的新手,我怀疑问题出在我不了解如何制定这些测试。代码加密效果很好——在我的调试器中解密给了我想要的结果。但是我怎样才能让它与 JUnit 一起工作。我犯了什么明显的错误?

最佳答案

问题出在这一行:

Cipher cipher = Cipher.getInstance("Blowfish/CBC/ZeroBytePadding");

您的系统不支持您请求的算法。您想要那个特定的原因有什么特别的原因吗?

The docs指定以下默认实现:

  • AES/CBC/NoPadding (128)
  • AES/CBC/PKCS5Padding (128)
  • AES/ECB/NoPadding (128)
  • AES/ECB/PKCS5Padding (128)
  • DES/CBC/NoPadding (56)
  • DES/CBC/PKCS5Padding (56)
  • DES/ECB/NoPadding (56)
  • DES/ECB/PKCS5Padding (56)
  • DESede/CBC/NoPadding (168)
  • DESede/CBC/PKCS5Padding (168)
  • DESede/ECB/NoPadding (168)
  • DESede/ECB/PKCS5Padding (168)
  • RSA/ECB/PKCS1Padding (1024, 2048)
  • RSA/ECB/OAEPWithSHA-1AndMGF1Padding (1024, 2048)
  • RSA/ECB/OAEPWithSHA-256AndMGF1Padding (1024, 2048)

关于java - junit java.security.NoSuchAlgorithmException : Cannot find any provider supporting 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27260435/

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