- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
jar (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
它等于已添加的提供程序的序号。
关于java - 为什么 java.security.NoSuchProviderException 没有这样的提供者 : BC?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3711754/
我正在尝试使用 Bouncy CaSTLe 作为 Maven 项目中的安全提供程序。它似乎在代码库的某些地方工作得很好,而且对某些人来说在任何地方都工作得很好。但是,如果我尝试这样的事情: publi
以下是我发送电子邮件的代码: Properties props = new Properties(); props.put("mail.smtp.host", host); p
我正在尝试使用log4j发送我的GWT项目的错误,但是我遇到了问题。 这是我添加到log4j.xml文件中的内容: 很简单,但是在尝试发送电
我已经对异常进行了研究并尝试了所有建议,但仍然不起作用!这是我的 pom.xml : 4.0.0 com.ambre pta pta war 1.0
我正在将一个旧的遗留应用程序从一台服务器迁移到另一台服务器,并重新安装 Java。我们有一个电子邮件应用程序,它从本地电子邮件目录读取电子邮件并进行处理。当我尝试运行该应用程序时,出现以下错误: su
我正在尝试编写一个 ECDSA java 算法来在 Android 手机中实现。使用 NFC 解析数据。这就是 write(id+"?"+nama+"?"+signature+"?"+saldo, m
我已经在我的机器上成功安装了加密库,所以安装后我在 jre\lib\security\java.security 中看到了这些行: security.provider.11=ru.CryptoPro.
我已经使用二维码实现了双重身份验证。我已经使用 GoogleAuth 完成了它图书馆。在我的本地环境中运行起来非常棒,但是当我在 WebSphere 8.5.5 上部署应用程序时,它会抛出此错误: j
我正在尝试设置我的 Java 项目以便能够发送电子邮件(通过 g-mail,如果它重要的话)并且每次我尝试时都收到“javax.mail.NoSuchProviderException:没有 smtp
我正在使用 AdvancedInstaller 9.8 将我的 javacode(网络应用程序)构建到安装程序。通常我的应用程序运行良好。使用 Advanced Installer 9.8 创建安装程
我有几个程序使用 SunMSCAPI 来读取需要 SSL 证书的网页。我的代码在 Windows XP(32 位)下工作,但在我全新安装的 Windows 7(64 位)下不起作用。这是一段代码: S
我在我的 Android 应用程序中使用以下代码发送电子邮件: m_properties = new Properties(); m_properties.put("mail.smtp
我有一个非常大的项目,有大量的依赖项,并且在尝试发送邮件时遇到以下异常: javax.mail.NoSuchProviderException: smtp 我知道代码有效,因为它是其他项目中使用的库的
我们有套接字应用程序,它会发送大量电子邮件。因此,我们决定向其中发送大量消息,这将触发电子邮件。最终我们看到电子邮件需要几个小时才能到达任何收件箱(gmail、hotmail 或 yahoo 等)。我
我正在尝试使用 Wildfly Swarm 构建一个现有的 JavaEE 项目,但我一直在我的一个库中遇到问题。它应该从服务器加载 PEM 格式的公钥并使用它来验证签名。但是,我不断得到这个: 201
当出现异常时,我使用 log4j 发送电子邮件。下面是我的 log4j 属性文件配置。 log4j.rootLogger=WARN, R, email log4j.appender.R=org.apa
我有一个独立的库(jar 文件),它被添加到应用程序服务器类路径以监控 JVM 中所有正在运行的应用程序并在出现问题时发送电子邮件。 jar 文件将所有依赖项捆绑在 jar 中(使用 maven-sh
我最近在我的公司接手了一项任务,该任务涉及实现目前在员工的 Windows 桌面上运行的应用程序,并将该代码迁移到办公室使用的 Unix 服务器。 该服务器还运行 IBM 的 websphere,其中
我正在尝试使用带有此代码的 apache james 发送电子邮件 public static void main(String[] args) { String user = "sumit"
我想发送邮件为用户重置密码,如果他忘记了密码,我会收到此错误: org.springframework.mail.MailSendException: Mail server connection f
我是一名优秀的程序员,十分优秀!