Tag: jce

以编程方式发现java无限加密

我有一个Java应用程序,需要安装JCE Unlimited Strength策略文件才能生成证书。 但是,目前,如果未安装文件,系统将无提示失败,而不是抛出exception或其他内容。 有没有一种程序化的方法来检查应用程序中的这些文件? 谢谢。

固定长度64字节EC P-256使用JCE签名

我需要一个固定长度的64字节ECDSA签名和NIST P-256曲线。 该实现有使用JCE。 以下代码示例可以生成签名并进行validation。 Provider provSign = new SunEC(); Provider provVerify = new SunEC(); // generate EC key KeyPairGenerator kg = KeyPairGenerator.getInstance(“EC”, provSign); ECGenParameterSpec ecParam = new ECGenParameterSpec(“secp256r1”); kg.initialize(ecParam); KeyPair keyPair = kg.generateKeyPair(); PrivateKey privateKey = keyPair.getPrivate(); PublicKey publicKey = keyPair.getPublic(); try { // export public key KeyFactory kf = KeyFactory.getInstance(“EC”, provSign); ECPublicKeySpec publicKeySpec = […]

生成BKS密钥库并存储应用密钥

我应该创建一个BKS密钥库并存储一个私有Application密钥,该密钥是一个48字符长的字符串。 我还有一个JCEKS密钥库,其中已包含此密钥值。 如果我尝试使用portecle工具转换为BKS类型密钥库,则Key条目将丢失。 我是JCE的新手。 有人可以指导我在Keystore中导入此密钥需要做些什么吗? 谢谢。

Java JCE无限强度加密安全策略文件

在JRE更新后,JCE策略文件(在{java.home} / lib / security中)是否被标准强度策略文件覆盖? 或者这些是否在JRE更新中独自存在? 编辑:有谁知道Mac OS X JRE是否附带无限制的策略文件? 谢谢 乔恩

Oracle JDK安装了两个JRE?

在downvoting或close- request这个问题之前,请看这个问题是关于JDK 7而不是6,它有第二个问题’Q2’,任何重复的线程都没有解决这个问题,这个问题不仅仅是四个 java.exe实例。 谢谢! 我刚刚安装了Oracle的Java SE JDK(64位),这导致了以下目录布局,并且不知何故有两个 JRE: C:\Program Files\Java\ \jdk1.7.0_40 \jre \jre7 我现在是四个 java.exe可执行文件的自豪拥有者: C:\Program Files\Java\jdk1.7.0_40\bin\java.exe C:\Program Files\Java\jdk1.7.0_40\jre\bin\java.exe C:\Program Files\Java\jre7\bin\java.exe C:\Windows\System32\java.exe Q1:我应该在搜索路径中添加哪一个来执行基于Java的应用程序? 问题2:我是否需要将无限制JCE策略文件放入我的搜索路径中相应JRE的安全子目录中,或者也放入所有其他文件以便正常工作?

已安装JCE Unlimited Strength但不支持AES 256

我已经为JAVA_HOME \ lib \ security安装了JCE Unlimited strength 但是,我仍然得到128 Cipher.getMaxAllowedKeyLength(“AES”) 。 我想知道我是否在错误的地方安装了JCE。 我在2个地方安装了Java。 C:\ Program Files \ Java \ jre7 C:\开发\的Java \ jdk1.6.0_21 谁能告诉我安装JCE无限力量的正确位置在哪里? 非常感谢您的帮助。 我的代码: KeyGenerator generator = KeyGenerator.getInstance(“AES”); generator.init(256); SecretKey secretKey = generator.generateKey(); byte[] raw= secretKey.getEncoded(); SecretKeySpec sskey= new SecretKeySpec(raw, “AES”); Cipher cipher = Cipher.getInstance(“AES/CBC/PKCS5Padding”); if (mode == Cipher.ENCRYPT_MODE) { Cipher.getMaxAllowedKeyLength(“AES”)); cipher.init(Cipher.ENCRYPT_MODE, sskey); CipherInputStream […]

AES / CBC / PKCS5Padding问题

我正在尝试加密和解密一些简单的文本。 但由于某种原因,我收到一个奇怪的错误: javax.crypto.BadPaddingException 。 为什么JCE会生成未正确填充的字节? 我有以下代码: import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax.crypto.SecretKey; import javax.crypto.spec.IvParameterSpec; import java.security.SecureRandom; public class SimplestTest { public static void main(String[] args) throws Exception { SecureRandom rnd = new SecureRandom(); String text = “Hello, my dear! … ” + System.getProperty(“user.home”); byte[] textData = text.getBytes(); IvParameterSpec iv = new IvParameterSpec(rnd.generateSeed(16)); KeyGenerator generator = […]

IBM的JCE提供商有什么问题?

我有一个JCE测试适用于我尝试过的所有Sun JDK,但是使用各种IBM J9 JDK(例如1.6.0 build pwi3260sr8-20100409_01(SR8))失败了。 当密码在加密模式下初始化时,会发生以下exception。 为什么IBM JCE不能使用自己的私钥? 我在代码中遗漏了什么吗? public void testBasicKeyGeneration() throws NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException, NoSuchProviderException, SignatureException { KeyPairGenerator generator = KeyPairGenerator.getInstance( “RSA” ); generator.initialize( 2048 ); KeyPair pair = generator.generateKeyPair(); String data1 = “123456789012345678901234567890123456789012345678901234567890”; Cipher cipher = Cipher.getInstance( “RSA” ); cipher.init( Cipher.ENCRYPT_MODE, pair.getPrivate() ); byte[] encrypted = cipher.doFinal( data1.getBytes() ); […]

在Java安全性中使用openssh公钥(ecdsa-sha2-nistp256)

是否有一个Java库/示例来读取Java中JCE PublicKey的openssh格式ecdsa PublicKey ? 我想将EC用于JWT 。 我试图读取的格式是按authorized_keys中,或Github的API(如https://api.github.com/users/davidcarboni/keys ): ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBK8hPtB72/sfYgNw1WTska2DNOJFx+QhUxuV6OLINSD2ty+6gxcM8yZrvMqWdMePGRb2cGh8L/0bGOk+64IQ/pM= 我找到了这个答案,这对RSA和DSS来说很好: 使用来自使用Java安全性的authorized_keys的公钥 ,以及对ECDSA的openssh格式的讨论: https : //security.stackexchange.com/questions/129910/ecdsa-为什么-DO-SSH-凯基和Java的生成公共密钥具备的,不同的,大小 然而,我迷失了尝试调整ECDSA的RSS / DSA代码 – 我不知道如何设置ECPublicKeySpec 。 它需要ECPoint , EllipticCurve , ECParameterSpec , ECField 。 openssh格式只包含两个整数,这对ECPoint ,但我不知道如何设置其余的。 我一直在寻找一堆库,包括jsch , sshj , ssh-tools和古老的Bouncycastle 。 我最接近的是: com.jcraft.jsch.KeyPair load = com.jcraft.jsch.KeyPair.load(jsch, null, bytes[openSshKey]); 哪个加载密钥很好,但不会让我去JCE PublicKey – 只是一个byte[] getPublicKeyBlob()方法。 我错过了一些明显的东西吗

解密使用OpenSSL生成的“der”文件时出现exception:使用填充密码解密时,输入长度必须是8的倍数

首先,我使用OpenSSL生成一个私有RSA密钥文件,然后将其转换为加密的“der”文件: $ openssl pkcs8 -topk8 -inform PEM -outform DER -in private_key.pem -out private_key.der 接下来我尝试使用以下代码从Java解密此文件(在此阶段我已经使用位于此post底部的代码将文件读入byte[] key数组): public static byte[] decryptPrivateKey(byte[] key) throws IOException, NoSuchAlgorithmException, InvalidKeySpecException, NoSuchPaddingException, InvalidKeyException, InvalidAlgorithmParameterException, IllegalBlockSizeException, BadPaddingException { PBEKeySpec passKeySpec = new PBEKeySpec(“p”.toCharArray()); //my password EncryptedPrivateKeyInfo encryptedKey = new EncryptedPrivateKeyInfo(key); System.out.println(encryptedKey.getAlgName()); //PBEWithMD5AndDES System.out.println(“key length: ” + key.length); //key length: 677 SecretKeyFactory keyFac = […]