Tag: cryptography

带有Bouncy Castle的256位AES / CBC / PKCS5Padding

我无法将以下JDK JCE加密代码映射到Bouncy Castles Light-weight API: public String dec(String password, String salt, String encString) throws Throwable { // AES algorithm with CBC cipher and PKCS5 padding Cipher cipher = Cipher.getInstance(“AES/CBC/PKCS5Padding”, “BC”); // Construct AES key from salt and 50 iterations PBEKeySpec pbeEKeySpec = new PBEKeySpec(password.toCharArray(), toByte(salt), 50, 256); SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(“PBEWithSHA256And256BitAES-CBC-BC”); SecretKeySpec secretKey = new […]

JavaScript未在HtmlUnit中正确执行

我目前正在使用HtmlUnit开发一些测试。 它正在加载一个包含braintree.js(它们的表单加密库)的页面。 我有一堆正在运行,但我被困在它调用加密的地方。 有问题的JS是: (function() { try { var ab = new Uint32Array(32); crypto.getRandomValues(ab); sjcl.random.addEntropy(ab, 1024, “crypto.getRandomValues”); } catch (e) {} })(); HtmlUnit抛出: EcmaError, ReferenceError, “‘crypto’ is not defined.” 我想HtmlUnit不包括加密。 是否可以自己包含加密库?

NoSuchAlgorithmException:算法HmacSHA1不可用

看看下面的java行: Mac.getInstance(“HmacSHA1”); 如果我把它放在一个简单的测试程序中,它在我的服务器上运行没有问题。 但是,如果我在容器中使用此行,我会得到 java.security.NoSuchAlgorithmException: Algorithm HmacSHA1 not available at javax.crypto.Mac.getInstance(DashoA13*..) 在这两种情况下都使用相同的JDK安装。 谷歌搜索了一下后,我设法通过做两件事来让它工作: 将sunjce_provider.jar从$JAVA_HOME/jre/lib/ext复制到容器的lib目录。 将以下行添加到我的代码中: java.security.Security.addProvider(new com.sun.crypto.provider.SunJCE()); 具体来说,这发生在Apache James mailet中,但我很确定这与JVM选项有关。 这是它使用的启动脚本 。 虽然最终我得到了它的工作,但解决方案感觉太难以成为正确的解决方案。 我会很感激对正在发生的事情的解释,以及更“正确”的解决方案。 相关问题 : 使用Java加密导致NoSuchAlgorithmException 。 但是,在这种情况下,我很确定应该支持开箱即用的HmacSHA1算法。 作为证据,这在测试程序中没有问题。

使用Bouncy Castle Java生成X509证书

我正在寻找一个示例或教程来使用Java中的BC生成X509证书。 很多例子都有/使用过时的API。 我看了BC,但它没有显示哪个类做了什么或没有适当的文档/示例。 如果您对此有任何想法,请指出我可以使用BC生成X509证书的教程。 [生成和写入文件的公钥和私钥]

如何使用带有AES和PBE的Bouncy Castle轻量级API

我有一块使用JCE算法“PBEWithSHA256And256BitAES-CBC-BC”创建的密文。 提供者是BouncyCastle。 我想做的是使用BouncyCastle轻量级API解密这个密文。 我不想使用JCE,因为这需要安装Unlimited Strength Jurisdiction Policy Files。 在使用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 { byte salt[] = new byte[8]; SecureRandom saltGen = SecureRandom.getInstance(“SHA1PRNG”); saltGen.nextBytes(salt); return salt; } private static byte[] encrypt(String […]

Java:如何为文件创建SHA-1?

在纯Java6中为非常大的文件创建SHA-1的最佳方法是什么? 如何实现此方法: public abstract String createSha1(java.io.File file);

为JAVA可靠地实施PBKDF2-HMAC-SHA256

对于JAVA,是否有可靠的PBKDF2-HMAC-SHA256实现? 我以前用bouncycastle加密但它没有提供PBKDF2WithHmacSHA256’。 我不想自己编写加密模块。 你能推荐任何替代的库或算法(如果我能坚持使用bouncycastle) (这里是bouncycastle支持算法的算法) http://www.bouncycastle.org/specifications.html

如何从EC公钥字节中获取PublicKey对象?

我正在开发一个应用程序,需要在secp256r1 (NIST P-256,P-256,prime256v1)公钥的帮助下validationSHA256withECDSA签名。 公钥在某个较早的时间点由不同的应用程序生成,并以hex编码存储在我的数据库中。 这里hex字符串的格式等同于OpenSSL在文件x.pem上调用openssl ec -in x.pem -noout -text时生成的hex字符串,该文件先前由openssl ecparam -genkey -name secp256r1 -out x.pem生成openssl ecparam -genkey -name secp256r1 -out x.pem 。 消息和签名是从不同的应用程序接收的。 考虑以下测试数据: // Stored in Database byte[] pubKey = DatatypeConverter.parseHexBinary(“049a55ad1e210cd113457ccd3465b930c9e7ade5e760ef64b63142dad43a308ed08e2d85632e8ff0322d3c7fda14409eafdc4c5b8ee0882fe885c92e3789c36a7a”); // Received from Other Application byte[] message = DatatypeConverter.parseHexBinary(“54686973206973206a75737420736f6d6520706f696e746c6573732064756d6d7920737472696e672e205468616e6b7320616e7977617920666f722074616b696e67207468652074696d6520746f206465636f6465206974203b2d29”); byte[] signature = DatatypeConverter.parseHexBinary(“304402205fef461a4714a18a5ca6dce6d5ab8604f09f3899313a28ab430eb9860f8be9d602203c8d36446be85383af3f2e8630f40c4172543322b5e8973e03fff2309755e654”); 现在这应该是一个有效的签名。 我的目标是使用Java和/或Bouncycastle加密APIvalidation消息上的签名。 我isValidSignature创建了一个方法isValidSignature : private static boolean isValidSignature(byte[] pubKey, […]

如何在openssl生成的java中使用.key和.crt文件?

我需要java中的非对称加密。 我在http://www.imacat.idv.tw/tech/sslcerts.html中用openssl生成带有自己密码和.crt文件的.key和.crt文件。 如何使用这些.key和.crt文件在Java中提取publickey和私钥?

为什么SSL握手会给出“无法生成DH密钥对”的exception?

当我与某些IRC服务器建立SSL连接(但不是其他服务器 – 可能是由于服务器的首选加密方法),我得到以下exception: Caused by: java.lang.RuntimeException: Could not generate DH keypair at com.sun.net.ssl.internal.ssl.DHCrypt.(DHCrypt.java:106) at com.sun.net.ssl.internal.ssl.ClientHandshaker.serverKeyExchange(ClientHandshaker.java:556) at com.sun.net.ssl.internal.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:183) at com.sun.net.ssl.internal.ssl.Handshaker.processLoop(Handshaker.java:593) at com.sun.net.ssl.internal.ssl.Handshaker.process_record(Handshaker.java:529) at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:893) at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1138) at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1165) … 3 more 最终原因: Caused by: java.security.InvalidAlgorithmParameterException: Prime size must be multiple of 64, and can only range from 512 to 1024 (inclusive) at com.sun.crypto.provider.DHKeyPairGenerator.initialize(DashoA13*..) at java.security.KeyPairGenerator$Delegate.initialize(KeyPairGenerator.java:627) at […]