- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我将 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指定以下默认实现:
关于java - junit java.security.NoSuchAlgorithmException : Cannot find any provider supporting 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27260435/
我想使用 MessageDigest 获取 MD5 哈希值,但出现错误。 import java.security.MessageDigest; public class dn { public
我正在尝试使用 Jacksum API generate a Whirlpool hash ,但我收到了 NoSuchAlgorithmException: import java.security.
public static void main(String[] args) throws Exception { System.setProperty("javax.net.ssl.
我正在使用 IBM 的 Java 版本和 HttpClient,但收效甚微。每当我使用 HttpClient 对象的executeMethod() 时,我都会收到NoSuchAlgorithmExce
您好,我有以下函数可以在我的应用程序中将字符串转换为私钥: public static PrivateKey main() throws Exception { // Read in the
这是我的代码: static { Security.addProvider(new BouncyCastleProvider()); } ... final Cipher sifra = Ci
尝试编译以下代码时,我每次都会生成 NoSuchAlgorithmException,无论我将什么字符串分配给算法变量(AES、DESede 等)。错误总是在构造函数中抛出,当我第一次尝试为键赋值时,
当我将 PBKDF2WithHmacSHA1 传递给 getInstance() 时,我不断收到 NoSuchAlgorithmException。 为什么会发生这种情况。我错过了一些进口吗? imp
我正在尝试对安全网站进行 POST 调用: 步骤: 1) 转到https://www.mywebsite.com (供引用) 2) 将上述网站的 keystore 导出到C:\Program File
这是我的代码的加密部分。它编译正常但在运行时因该异常而失败: import java.util.Random; import javax.crypto.Cipher; import javax.cry
我想使用 flexiprovider library我正在尝试实例化一个简单的 de.flexiprovider.api.MessageDigest;与下一个代码 MessageDigest dige
方法SecureRandom.getInstanceStrong()声明它可以抛出 NoSuchAlgorithmException,但是文档说: Every implementation of th
我在使用 BouncyCaSTLe 检查 XMLSignature 以验证使用 ECDSA 的签名时遇到问题。 以下是相关的代码行: BouncyCastleProvider provider = n
Java 表示在这一行中,找不到文件 ssc.store: server = ((SSLServerSocketFactory) SSLServerSocketFactory.getDefault()
这是在将现有代码库克隆到 OSX 机器上之后第一次运行 ./gradlew 的错误。 有问题的包装器给出了以下输出(在另一个系统上) ./gradlew -v -------------------
查看下面的 java 行: Mac.getInstance("HmacSHA1"); 如果我把它放在一个简单的测试程序中,它在我的服务器上运行没有问题。但是,如果我在容器中使用这一行,我会得到 jav
我在以下代码中得到 NoSuchAlgorithmException: @RunWith(PowerMockRunner.class) @PrepareForTest({CloudWatchHel
在 JRE 1.8 (jdk1.8.0_101) 上使用 SSL 从 JBoss 连接 IBM MQ 时遇到问题 我在下面的 java.security 上发表评论,但没有任何变化: jdk.cert
我正在开发一个独立的java应用程序,它将打包为jar文件(OSGi插件),并在部署在Jboss AS 7.1上的EAR中运行当我尝试连接到Microsoft SQLServer 10 使用 JDBC
这段代码出现“javax.net.ssl.SSLException:连接重置” ReadableByteChannel rbc = Channels.newChannel(url.getInputSt
我是一名优秀的程序员,十分优秀!