- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
是否可以使用JCE来执行CCM?
我在 Internet 上看到很多使用非 JCE bouncycaSTLe 类的示例。特别是,我看到他们调用 init 并传入 CCMParameters 对象。
问题是,这个 CCMParameters 对象不是从 AlgorthmParameters 或 AlgorithmParameterSpec 派生的,所以似乎没有办法将它传递到 Cipher.init()(在使用 Cipher.getInstance("AES/CCM/NoPadding")).
如何做到这一点?
最佳答案
您好,这是 AES-CCM 算法的示例代码其中所有常用名称都是输入参数。注意十六进制数据字节和所有其他事情
import org.bouncycastle.crypto.BlockCipher;
import org.bouncycastle.crypto.InvalidCipherTextException;
import org.bouncycastle.crypto.engines.AESEngine;
import org.bouncycastle.crypto.modes.CCMBlockCipher;
import org.bouncycastle.crypto.params.CCMParameters;
import org.bouncycastle.crypto.params.KeyParameter;
import org.bouncycastle.util.encoders.Hex;
public class AesCcm {
public static void main(String[] args) throws IllegalStateException, InvalidCipherTextException {
int macSize = 125;
byte[] key = new byte[32];
byte[] keybyte = "test123".getBytes();
byte[] inputNouc = "abcdefghijklm".getBytes();
for (int I = 0; I < keybyte.length; I++) {
key[I] = keybyte[I];
}
// Input data in HEX format
String input = "ed88fe7b95fa0ffa190b7ab33933fa";
byte[] inputData= Hex.decode(input);
BlockCipher engine = new AESEngine();
CCMParameters params = new CCMParameters(new KeyParameter(key),
macSize, inputNouc, null);
CCMBlockCipher cipher = new CCMBlockCipher(engine);
cipher.init(true, params);
byte[] outputText = new byte[cipher.getOutputSize(inputData.length)];
int outputLen = cipher.processBytes(inputData, 0, inputData.length,
outputText , 0);
cipher.doFinal(outputText, outputLen);
// outputText and mac are in bytes
System.out.println(outputText);
System.out.println(cipher.getMac());
}
}
关于java - 如何将 AES CCM 与 BouncycaSTLe JCE 提供程序一起使用 - CCMParameters,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38062249/
是否可以将通过 ncipher JCE API 生成的 key “重定向”到 pkcs11?我知道您可以通过 generatekey 命令重新定位,但我不知道如何对现有的 JCE key 执行此操作。
你能帮我指出默认的 RSA 填充是什么吗? 准确地说,如果我如下创建密码实例,确保 java 使用某种填充作为加密文本字节长度始终显示 256 字节的 2048 RSA key ,无论纯文本是一个字符
这个问题在这里已经有了答案: How to avoid installing "Unlimited Strength" JCE policy files when deploying an appl
我正在尝试使用 jasypt 使用基于密码的 aes 加密来加密一个简单的字符串,并且我在很多代码示例中遇到该算法以字符串形式给出,如“PBEWithSHA512AndAES256-CBC-BC”。我
我需要编写一个 java JCE 提供程序。我已经在网上查了好几天了,但找不到解决方案。您能给我一些有用的信息吗?问候, 最佳答案 文档是 here和 here ,但是你为什么要这样做呢?大多数主流加
我有一个 Joomla! 3.3.3 并且我正在使用 JCE。我的问题是编辑器没有在工具栏上显示按钮的图标。使用 Firebug,我意识到这是所有主题的 css 路径中的问题。 在本例中,我使用的是
如我所见document ,JCE 有多个提供者。如何找出默认可用的提供程序? 最佳答案 调用Security.getProviders() ,例如 for (Provider provider :
在 JRE 更新后,JCE 策略文件(位于 {java.home}/lib/security)是否被标准强度策略文件覆盖?还是这些在 JRE 更新中单独存在? 编辑:有谁知道 Mac OS X JRE
是否可以使用 Java 的 JCE 库加密整个文件夹。如果有问题,这些文件夹将包含其他文件夹/文件。对于那些不知道 JCE 是什么的人,它代表 Java Cryptography Extension,
我正在使用以下代码来获取 AESCMAC Mac mac = Mac.getInstance("aescmac", new BouncyCastleProvider()); mac.init(k_ma
我已经安装了JDK 7 。其中已包含以下 JAR: local_policy US_export_policy 但是当我开始申请时,我面临着 JCE error 。所以我用谷歌搜索并下载了JDK 7
有谁知道为什么我无法在 Eclipse 中查看“Cipher”的源代码?源代码在那里,我可以看到 openjdk 中的一些其他内置源代码,例如“println”,但无法弄清楚为什么我无法查看“Ciph
我必须运行一个相当旧的程序代码,它使用 ABA-provider for JCE。所有类都可以在源文件夹中找到。但是,会出现 NoSuchProviderException:“JCE 无法验证提供程序
我开发了一个应用程序,在 BountyCaSTLe.jar 的帮助下,我在其中使用了密码术。我还有一行 Security.addProvider(new org.bouncycaSTLe.jce.pr
我们有自定义的 JCE 安全提供商,它使用我们的智能卡来执行加密操作。 当我们尝试使用某些类(如 Cipher、KeyAgreement、KeyGenerator、Mac 或 SecretKeyFac
我有一个关于 JCE 加密的问题。您如何用 Java 编写自己的加密算法/ key 生成器,可以将其作为 .jar 文件安装在 ext 目录中?我想出了算法的基本思想,但我不知道如何实现它。我是否将
我正在开发一个程序,我将使用该程序使用 JCE 来加密和解密文件。我的加密和解密在默认模式 (ECB/PKCS5PADDING) 下正常工作,但是当我尝试使用 CBC 并解密我的文件时,我得到的一些文
我们已将 Java 产品配置为仅使用经 FIPS 验证的 RSA JCE 加密提供程序。但是,当 只有 RSA 库在 java.security 中列出时,该产品将无法工作。因此,有些东西正在向其他提
Sun 的 PKCS11 JCE 安全提供程序缺少我们需要的一些功能。 所以我使用原始资源编写了它的增强版本。 不幸的是,JCE 基础设施拒绝了新的提供者 “JCE 无法验证提供者” 因为它没有正确签
不论是JCE还是CKEDITOR,都没解决中文名文件的问题,要么上传失败,要么传上去了中文名不能被web访问。相比之下,JCE更加人性化,比如文件上传后默认被选中,不需用户在那么小的弹出窗口去上下翻
我是一名优秀的程序员,十分优秀!