罐(bcprov-jdk16-145.jar)已添加到项目中,Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider())
已添加到类中,并且BouncyCastleProvider.PROVIDER_NAME
确实返回“
BC”,但AesFileIo.writeFile()仍会抛出java.security.NoSuchProviderException No such provider: BC
。有任何想法吗?
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.ObjectOutputStream;
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
public class AesFileIo {
private static final String AES_ALGORITHM = "AES/CTR/NoPadding";
private static final String PROVIDER = BouncyCastleProvider.PROVIDER_NAME;
private static final byte[] AES_KEY_128 = { // Hard coded for now
78, -90, 42, 70, -5, 20, -114, 103,
-99, -25, 76, 95, -85, 94, 57, 54};
private static final byte[] IV = { // Hard coded for now
-85, -67, -5, 88, 28, 49, 49, 85,
114, 83, -40, 119, -65, 91, 76, 108};
private static final SecretKeySpec secretKeySpec =
new SecretKeySpec(AES_KEY_128, "AES");
private static final IvParameterSpec ivSpec = new IvParameterSpec(IV);
public void AesFileIo() {
Security.addProvider(new org.bouncycastle.jce.provider
.BouncyCastleProvider());
}
public void writeFile(String fileName, String theFile) {
try {
Cipher cipher = Cipher.getInstance(AES_ALGORITHM, PROVIDER);
cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec, ivSpec);
byte[] encrypted = cipher.doFinal(theFile.getBytes());
ObjectOutputStream os = new ObjectOutputStream(
new FileOutputStream(fileName));
os.write(encrypted);
os.flush();
os.close();
} catch (Exception e) {
StackTraceElement se = new Exception().getStackTrace()[0];
System.err.println(se.getFileName() + " " + se.getLineNumber()
+ " " + e);
}
}
}
我对Android sdk不太熟悉,但是似乎提供程序android-sdk
附带BouncyCastle
的安全性已经增加了。
在PC环境中,您只需手动添加即可,
Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
如果您有权访问该policy
文件,只需添加一个条目,如:
security.provider.5=org.bouncycastle.jce.provider.BouncyCastleProvider
注意,.5
它等于已添加的提供程序的序号。
为了防止实现细节泄漏,可以实现,而不是返回,然后需要从接口实现。因此,无论内部数据结构如何管理,对元素的访问都是通过进行的。 对于Java8,可能希望将添加到。(另请参阅《Java8lambdas》一书中关于支持的建议)。虽然添加方法并不困难(我也读过关于为什么Iterable不提供流的问题),但奇怪的是Java没有为添加接口来镜像思想。(好吧,可能有一个不同的名称,因为是为了永远使用CORBA的
我当前的提供商有: 0-提供程序名称:SUN 1-提供程序名称:SUNRSAGN 2-提供程序名称:SunEC ... 9-提供商名称:SunPKCS11 CartaoCidadao 第九个提供者是我尝试使用的提供者,它使用pkcs11库。 使用info方法我可以看到它正在使用库: SunPKCS11 CartaoCidadao使用library/usr/local/lib/libpteidpkc
问题内容: 由于某些原因,我的代码无法打开简单文件: 这是代码: 错误是: 自然地,我检查了这是文件的正确名称。 我尝试在文件中四处移动,提供文件open()的完整路径,但似乎都不起作用。 问题答案: 确保文件存在:用于查看当前工作目录中的文件列表 确保你位于自己认为所在的目录中(如果从IDE启动代码,则可能位于其他目录中) 然后,你可以: 调用,即文件所在的文件夹,然后像以前一样使用文件名打开文
问题内容: 是什么意思? 错误不应该: 没有相应的文件和目录 只是被命名? 有什么故事或理由吗? 问题答案: 它是Error NO ENTry(或Error NO ENTity)的缩写,实际上可用于多个文件/目录。 之所以缩写,是因为C编译器在黎明时不支持超过8个字符的符号。
如果你按照这些说明开始使用kubernetes,你添加一个apt源(德布http://apt.kubernetes.io/ kubernetes-xenial main)并被告知安装软件包“docker-engine”。这个包由kubernetes apt库提供,与Ubuntu (docker.io)提供的包冲突。 Kubernetes仓库中的docker引擎软件包和Ubuntu xenial中的
问题内容: 当我有嵌套在根组件下的组件时,我无法实例化我的应用程序,该组件在其构造函数中使用。 我想知道为什么这种行为是非法的。假设我想在班级中使用该类,而只是在班级中引用该类。这似乎是不可能的。 创建层次结构的正确方法是什么? 谢谢你 PLNKR:http ://plnkr.co/edit/5Z0QMAEyZNUAotZ6r7Yi?p=preview 问题答案: 您可以直接将父组件注入到组件中,