Tag: javax.crypto

再次使用javax.crypto JDK源代码

我一直在寻找javax.crypto JDK源代码,我找不到它。 这可能是由于我的搜索无能为力,或者必须有一个原因导致代码不可用(JDK应该是开源的,对吧?)。 我的猜测是当前的jdk javax.crypto有一个NSA强制的后门程序,使得开源发布变得尴尬。 我的问题如下: jdk javax.crypto源代码在哪里? 如果我认为jdk javax.crypto源代码不可用,我怎样才能检查我是否担心它包含后门是否有问题? 请参阅我在哪里可以找到javax.crypto源代码?

Nodejs Crypto Javascript中的javax.crypto.Cipher等效代码

我正在尝试将以下java代码转换为nodejs。 public static String encrypt(String accessToken) throws Exception { Cipher cipher = Cipher.getInstance(“AES”); String merchantKey = “11111111111111111111”; String st = StringUtils.substring(merchantKey, 0, 16); System.out.println(st); Key secretKey = new SecretKeySpec(st.getBytes(), “AES”); cipher.init(Cipher.ENCRYPT_MODE, secretKey); byte[] encryptedByte = cipher.doFinal(accessToken.getBytes()); // convert the byte to hex format StringBuffer sb = new StringBuffer(); for (int i = 0; i < […]

Javascript / NodeJS等效代码为Java代码Cipher.doFinal(byte )?

我正在将一些服务器端Java代码迁移到新的NodeJS服务器。 我正在寻找Javascript中的等效方法调用到Java的Cipher.doFinal(byte [])注意我不能使用NodeJS缓冲区,因为它们不支持负字节值。 所以要进行加密,我需要一个接受正数和负数数组的方法。 以下是我目前所有与此问题相关的内容: 节点JS / Javascript: var crypto = require(‘crypto’); var cipher = crypto.createCipher(‘aes256’,key); Java(javax.crypto.Cipher): Cipher cipher; SecretKeySpec skeySpec = new SecretKeySpec(key, “AES”); try { cipher = Cipher.getInstance(“AES”); } catch (NoSuchAlgorithmException e) { } catch (NoSuchPaddingException e) { }try { cipher.init(Cipher.ENCRYPT_MODE, skeySpec); } catch (InvalidKeyException e) { } 稍后在Java代码中,我调用此方法,其中Iv表示初始化向量: byte[] newIv = cipher.doFinal(myIv); […]

使用OpenSSL加密的方式与Java相同

我必须使用bash脚本加密字符串,就像我使用javax.crypto.Cipher加密一样。 在java我使用AES-256,密钥为“0123456789”。 但是当我使用openssl时我不得不将“0123456789”转换为hex,但结果与java不一样 echo “lun01” | openssl aes-256-cbc -e -a -K 7573746f726530313233343536373839 -iv 7573746f726530313233343536373839 dpMyN7L5HI8VZEs1biQJ7g == Java的: public class CryptUtil { public static final String DEFAULT_KEY = “0123456789”; private static CryptUtil instance; private String chiperKey; private CryptUtil(String chiperKey) { this.chiperKey = chiperKey; } public static CryptUtil getInstance() { if (null == instance) { instance = […]

javax.crypto在不同版本的Android OS中的工作方式不同?

我正在使用此代码段来加密/解密我应用的数据库中的数据: http://www.androidsnippets.com/encryptdecrypt-strings 似乎javax.crypto.KeyGenerator.generateKey()操作在Android 2.3.3 OS中的工作方式与其他(以前的?)版本不同。 当然,这对我的用户在将设备从2.2升级到2.3.3并且应用程序开始抛出解密数据库的错误时会出现一个主要问题。 这是一个已知的问题? 我是否错误地使用了加密库? 任何人都有任何关于如何解决这个问题的建议,以便2.2中加密的数据能够在2.3.3中解密? 我构建了一个测试应用程序,通过加密function提供值。 当我在2.2 AVD上运行它时,我得到一个结果。 当我在2.3.3 AVD上运行时,我得到了不同的结果。 import java.security.SecureRandom; import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax.crypto.SecretKey; import javax.crypto.spec.SecretKeySpec; import android.app.Activity; import android.os.Bundle; import android.widget.TextView; public class main extends Activity { TextView tvOutput; static String out; String TEST_STRING = “abcdefghijklmnopqrstuvwxyz”; String PASSKEY = “ThePasswordIsPassord”; /** Called when the activity is […]

PBKDF2WithHmacSHA512 Vs. PBKDF2WithHmacSHA1

我正在研究一个Java认证子系统,该子系统规定在DB中存储密码为PBKDF2生成的哈希,我现在正在尝试决定是否应该使用SHA1或SHA512作为PFR。 我仔细检查了两者的规格,但我们在数学上非常密集地跟随它。 有更好的加密理解的人可以解释PBKDF2WithHmacSHA512与PBKDF2WithHmacSHA512区别吗? 这是我正在尝试做的事情: private static final int HASH_BYTE_SIZE = 64; // 512 bits private static final int PBKDF2_ITERATIONS = 1000; // generate random salt SecureRandom random = new SecureRandom(); byte salt[] = new byte[SALT_BYTE_SIZE]; // use salt size at least as long as hash random.nextBytes(salt); // generate Hash PBEKeySpec spec = new PBEKeySpec(password, salt, […]

为什么我得到包javax.crypto不存在

当我使用javax.crypto.Mac编译一个类时,我收到此错误消息? 包javax.crypto不存在 我可以通过在我的编译类路径中包含jre / lib / jce.jar来解决它。 为什么jce.jar不在默认的jdk类路径上? jre / lib / rt.jar在classpath上,包含其他javax包,但是jce看起来很特别?

如何列出可用的密码算法?

我正在使用Cipher.getInstance(String algorithm)获得Cipher实现。 我的印象是,我可能传递的可用算法名称因我的类路径中存在的库而异。 我想编写一个简单的程序,我可以使用不同的类路径运行,列出可用的Cipher算法名称。 获取此列表需要调用哪种方法?