java密码学扩展(JCE)是否与JRE捆绑在一起?
我需要确定即使在开箱即用的JRE环境中也可以使用JCE.在Furious Googleling之后,我只设法验证了JCE在Java 1.4之后与JDK捆绑在一起. JCE是否还捆绑了普通的JRE下载? 您能指出您找到信息的位置,所以我可以自己验证并知道我错过了什么? 解决方案 是的,JCE如今都包含在Java的所有版本中.html#WhatsNew" rel =" nofollow">相关公告. 其他解决方案 您是否看过$JRE_HOME/lib/jce.jar? ~$ jar tvf jce.jar 6399 Thu Jul 27 16:03:42 CEST 2006 META-INF/MANIFEST.MF 6305 Thu Jul 27 16:03:42 CEST 2006 META-INF/JCE_RSA.SF 2015 Thu Jul 27 16:03:42 CEST 2006 META-INF/JCE_RSA.RSA 0 Thu J
2 2024-04-05
编程技术问答社区
Java/Kotlin输出Ed25519密钥对,既是JCE密钥对实例,又是OpenSSH格式。
我正在使用 bouncycastle 图书馆库,并拥有 提供关键对作为提供openssh .pub格式的公共密钥,供用户复制并粘贴到git存储库提供商,例如github(即ssh-ed25519 ) 我有两个使用Bouncycastle生成键的选项,每个选项都使这些要求之一变得容易. 使用Bouncycastle Generator直接生成 val generator = Ed25519KeyPairGenerator() generator.init(Ed25519KeyGenerationParameters(SecureRandom())) val pair = generator.generateKeyPair() 这给了我一个包含Ed25519PublicKeyParameters的键,这使得使用Bouncycastle提供的OpenSSHPublicKeyUtil获得OpenSSH .PUB格式非常容易:
16 2024-04-03
编程技术问答社区
如何在Java中解密私钥(无需BC openssl)?
是否可能使用JCE和/或Bouncycastle提供商(不使用OpenSSL捆绑包)解密加密的RSA(或其他不重要的)私钥? 我可以使用privateKeyFactory读取未加密的键. 谷歌搜索这使我通过使用Pemreader(来自BC OpenSSL捆绑包)的示例,该示例应用了一个密码,但是 - 不想使用OpenSSL捆绑包,不一定要使用PEM格式,我可以使用PemReader(来自提供商捆绑包)解码PEM.之后我可以做的是问题. 我正在寻找一些可以做到的巨型功能或其一系列可以做到的,即,我不是在考虑解析加密密钥的ASN1,找出加密方法,通过密码传递输入,等等. . 解决方案 如果您具有二进制格式的加密PKCS#8密钥(即不采用PEM格式),则以下代码显示了如何检索私钥: public PrivateKey decryptKey(byte[] pkcs8Data, char[] password) throws Exception { PBEK
6 2024-04-03
编程技术问答社区
用Bouncy Castle解密PEM私人(RSA)密钥
目标:从加密的PEM文件中提取RSA私钥.私钥将用于编程签名证书. 环境:Java 8和弹力城堡1.52 使用弹力城堡pemparser(pkcsexception的结果) //Register BC as a crypto provider Security.addProvider(new BouncyCastleProvider()); //Get file handle String caPrivateKeyFname = "cakey.pem"; FileInputStream fis = null; try { fis = new FileInputStream(caPrivateKeyFname); } catch (FileNotFoundException e) { e.printStackTrace(); } //Load and parse P
8 2024-04-03
编程技术问答社区
生成GOST 34.10-2001密钥对并将其保存到某个密钥库中
目前,我需要为GOST 34.10-2001签名算法生成键盘.很高兴发现有弹性城堡提供商支持该算法,但是我无法生成Keypair并将其保存到任何类型的任何密钥库中.目前,我尝试了此命令(如果keyalg是DSA,并且Sigalg是SHA1withDSA): keytool -genkey -alias test1 -keyalg ECGOST3410 -keysize 512 -sigalg GOST3411withECGOST3410 \ -keypass test_1 -validity 1000 -storetype JKS -keystore test1.jks -storepass test_1 -v \ -provider org.bouncycastle.jce.provider.BouncyCastleProvider -providerpath "bcprov-jdk16-1.46.jar" 但是我有一个错误: keytool error: java.
10 2024-04-03
编程技术问答社区
如何使用AES CCM与Bouncycastle JCE提供商-CCMParameters
是否可以使用JCE执行CCM? 我使用非JCE Bouncycastle课程在Internet上看到了很多示例.特别是,我看到他们在ccmparameters对象中调用init传递. 麻烦是,此ccmparameters对象不是源自algorthmparameters或algorithmparameterspec,因此似乎无法将其传递到cipher.init()(在使用cipher.getInstance中获得密码后(" aes/ccm/ccm/ccm/ccm/ccm/ccm/nopadding")). 一个人如何做? 解决方案 嗨,这是AES-CCM算法的示例代码 所有常规名称都是输入参数. 注意十六进制数据字节和所有其他内容 import org.bouncycastle.crypto.BlockCipher; import org.bouncycastle.crypto.InvalidCipherTextException; import org.b
6 2024-04-03
编程技术问答社区
使用BouncyCastle进行简单的HTTPS查询
这是我用来执行简单https请求的代码的简化版本: // Assume the variables host, file and postData have valid String values final URL url = new URL("https", host, file); final HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("POST"); connection.setDoInput(true); connection.setDoOutput(true); connection.setRequestProperty("Content-length", String.valueOf(postData.length())); final DataOutputStream output = new Data
14 2024-04-03
编程技术问答社区
弹力城堡:如何获得BCPKIX-JDK15ON-1.47.JAR带有调试信息
我试图调试有弹性城堡1.47的问题.我可以找到一个用于'bcprov'的调试罐,但找不到{org.bouncycastle:bcpkix-jdk15on:1.47:jar}. 还有其他地方可以下载BCPKIX-JDK15ON-1.47.JAR带有调试信息吗? 或 是否有一个工具可以从JAR(包含.class文件)生成无行号的线号,还可以生成相同生成的JAR的来源? 或 我一直在尝试从源 1 ,但是构建无法找到测试,我想从错误中猜想 [javadoc] /tickets/bouncycastle/src-cvs/java/crypto/build/artifacts/jdk1.5/bcprov-jdk15on-147/src/org/bouncycastle/jce/provider/test/AllTests.java:5: package junit.framework does not exist [javadoc] import juni
12 2024-04-03
编程技术问答社区
被Java安全和BouncyCastle APIs搞糊涂了
我一直在努力理解Java的Bouncycastle密码API.不幸的是,我发现Java密码学总体上被服务提供商界面和行话所掩盖,以至于我无法围绕着实际的工作.我已经尝试反复阅读必要的文档,但它只是难以理解的,引入了许多概念,远远超出了我认为的范围. 我真正想要的只是一个完成以下操作的课程: public class KeyPair { public byte[] public; public byte[] private; } public class RSACrypto { public static KeyPair generateRSAKeyPair() { /*implementation*/} public static byte[] encrypt(byte[] data, byte[] publicKey) { /*impl*/} public static byte[] decrypt(byte[] encrypted
8 2024-04-03
编程技术问答社区
阅读pkcs12证书信息
我在阅读证书信息方面有问题.我想在Android中使用Java阅读完整的信息,以编程为Android.现在,我只是在控制台中使用keytool命令: >keytool -list -keystore 1.p12 -storetype pkcs12 -v 有什么建议? 解决方案 我找到了解决方案,主要想法是将证书投放到x509,然后获取主题和解析值. public class TestClass { public static void main(String[] args) throws Exception { KeyStore p12 = KeyStore.getInstance("pkcs12"); p12.load(new FileInputStream("pkcs.p12"), "password".toCharArray()); Enumeration e = p12.aliase
12 2024-04-03
编程技术问答社区
在JAVA中使用AES/GCM检测错误的密钥
我正在使用AES使用Bouncycastle加密/解密某些文件. 虽然我证明了错误的解密键,但也不例外. 我应该如何检查键是否不正确? 我的代码是: SecretKeySpec incorrectKey = new SecretKeySpec(keyBytes, "AES"); IvParameterSpec ivSpec = new IvParameterSpec(ivBytes); Cipher cipher = Cipher.getInstance("AES/GCM/NoPadding", "BC"); byte[] block = new byte[1048576]; int i; cipher.init(Cipher.DECRYPT_MODE, incorrectKey, ivSpec); BufferedInputStream fis=new BufferedInputStream(
4 2024-04-03
编程技术问答社区
蹦蹦跳跳的城堡与OAEP的Java默认RSA对比
有人可以向我解释为什么此代码解密键时在最后一行上投掷javax.crypto.BadPaddingException: Decryption error? // Given an RSA key pair... KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA"); keyGen.initialize(2048); KeyPair keyPair = keyGen.genKeyPair(); PrivateKey privateKey = keyPair.getPrivate(); PublicKey publicKey = keyPair.getPublic(); // ... and an AES key: KeyGenerator keyGenerator = KeyGenerator.getInstance("AES"); keyGenerator.init(256); SecretKey aesKey
8 2024-04-03
编程技术问答社区
如何用AES和PBE使用Bouncy Castle轻量级API
我有一个使用JCE Algorithim" P​​bewithSha256and256Bitaes-CBC-BC"创建的密文.提供商是Bouncycastle.我想做的是使用Bouncycastle轻量级API解密此密文.我不想使用JCE,因为这需要安装无限的强度管辖权策略文件. 文档在将BC与PBE和AES一起使用时似乎很薄. . 这是我到目前为止所拥有的.解密代码不一例地运行,但返回垃圾. 加密代码, String password = "qwerty"; String plainText = "hello world"; byte[] salt = generateSalt(); byte[] cipherText = encrypt(plainText, password.toCharArray(), salt); private static byte[] generateSalt() throws NoSuchAlgorithmException
4 2024-04-03
编程技术问答社区
如何将公共EC代码点和曲线名称转换成公共密钥?
我有两个32个字节长字节阵列,代表EC公钥的x和y值.我知道曲线是命名曲线" Prime256v1". 如何将其转变为Java PublicKey对象? JCE似乎没有提供任何使用的设施. Bouncycastle的示例代码似乎没有我能找到的任何版本的Bouncycastle编译. wtf? 解决方案 事实证明,实际上是另一种做到这一点的方法.显然可以使用算法的算法将EcgenParametersPec转换为带有命名曲线的EcgenParametersPec,并将其用于ecparameterspec对象,您可以与keyfactory一起使用,以生成publickey对象: > ECPoint pubPoint = new ECPoint(new BigInteger(1, x), new BigInteger(1, y)); AlgorithmParameters parameters = AlgorithmParameters.getInstance
2 2024-04-03
编程技术问答社区
bouncycastle + JBoss AS7: JCE无法认证提供者BC
我在应用程序中使用Bouncycastle进行加密.当我独立运行时,一切正常.但是,如果我将其放入WebApp并在JBOSS服务器上部署,则会收到以下错误: javax.servlet.ServletException: error constructing MAC: java.security.NoSuchProviderException: JCE cannot authenticate the provider BC (...) root cause java.lang.Exception: error constructing MAC: java.security.NoSuchProviderException: JCE cannot authenticate the provider BC (...) root cause java.io.IOException: error constructing MAC: java.security.NoSuchProviderEx
10 2024-04-03
编程技术问答社区
PBKDF2与Bouncycastle在Java中的应用
我正在尝试将密码牢固地存储在数据库中,为此,我选择存储使用PBKDF2函数生成的哈希.我想使用弹力城堡库来执行此操作,但我不知道为什么使用JCE界面无法使其工作... 问题在于以3种不同的模式生成哈希: 1.使用Sun提供的PBKDF2WITHHMACSHA1秘密密钥工厂 2.直接使用弹力城堡API 3.通过JCE使用弹力城堡 结果有2个不同的值:一个是前两个共有的,一个是第三个值. 这是我的代码: //Mode 1 SecretKeyFactory factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1"); KeySpec keyspec = new PBEKeySpec("password".toCharArray(), salt, 1000, 128); Key key = factory.generateSecret(keyspec); System.ou
6 2024-04-03
编程技术问答社区
如何用java读取密码加密的密钥?
我的私有密钥存储在pkcs8 der格式中,并受密码保护.阅读它的最简单方法是什么? 这是我用来加载未加密的代码: InputStream in = new FileInputStream(privateKeyFilename); byte[] privateKeydata = new byte[in.available()]; in.read(privateKeydata); in.close(); KeyFactory privateKeyFactory = KeyFactory.getInstance("RSA"); PKCS8EncodedKeySpec encodedKeySpec = new PKCS8EncodedKeySpec(privateKeydata); PrivateKey privateKey = privateKeyFactory.generatePrivate(encodedKeySpec); 它适用于具有相同规范的未加密键.顺便说一句,我正
4 2024-04-03
编程技术问答社区
在Java中通过SHA-256对字符串进行哈希运算
通过环顾四周以及一般的互联网,我找到了弹力城堡.我想使用弹力城堡(或其他一些免费的实用程序)在Java中生成SHA-256 HASH.查看他们的文档,我似乎找不到任何我想做什么的好例子.这里有人可以帮我吗? 解决方案 要放置一个字符串,使用http://docs.oracle.com/javase/8/docs/api/java/security/security/messegedigest.html" rer =" noreferrer"> messagedigest 类: import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.nio.charset.StandardCharsets; import java.math.BigInteger; public class CryptoHash { public static void
14 2024-04-03
编程技术问答社区
使用Java-PNS向iPhone发送推送通知时出现错误?
我正在使用javapns_2.2.2.jar文件将推送通知消息发送到iPhone设备. 我的代码是: PushNotificationPayload payload = PushNotificationPayload.complex(); /* Customize the payload */ payload.addAlert("Hello World!"); payload.addCustomDictionary("mykey1", "My Value 1"); payload.addCustomDictionary("mykey2", 2); /* Push your custom payload */ String keystore = "C:/1.0Eywa_Baba/PushNotificationKey.p12"; String password = "Eywa@12"; boolean production = false; String devices
6 2024-03-02
编程技术问答社区
AES/CCB/PCS5填充问题
我试图加密并解密一些简单的文本.但是由于某种原因,我遇到了一个奇怪的错误: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!
14 2024-01-19
编程技术问答社区