Tag: jce

AES / CBC在Java中加密,在Ruby中解密

我正在尝试将以下(工作)Java代码转换为Ruby。 public static final String PROVIDER = “BC”; public static final int IV_LENGTH = 16; private static final String HASH_ALGORITHM = “SHA-512”; private static final String PBE_ALGORITHM = “PBEWithSHA256And256BitAES-CBC-BC”; private static final String CIPHER_ALGORITHM = “AES/CBC/PKCS5Padding”; private static final String SECRET_KEY_ALGORITHM = “AES”; public String decrypt(SecretKey secret, String encrypted) { Cipher decryptionCipher = Cipher.getInstance(CIPHER_ALGORITHM, PROVIDER); […]

哪里可以找到Java 6 JSSE / JCE源代码?

哪里可以下载最新版Java的JSSE和JCE源代码? https://jdk6.dev.java.net/上提供的源代码构建版不包含javax.crypto(JCE)包和com.sun.net.ssl.internal(JSSE)包。 无法调试这些类使得解决SSL问题非常困难。

使用Objective-C加密数据并使用Java Problem解密

我有一个iPhone解决方案,它使用XML在客户端(移动)和服务器(Java)之间传输数据。 由于传输的信息类型,必须加密消息的某些部分(XML)。 我计划使用AES 128来加密和解密这两个端点之间的数据。 首先使用Object-C的CommonCrypto框架加密敏感数据,然后在Java Server(Servlet)内解密数据。 我是安全协议和标准的新手,基本上我的代码是我可以在Apple的开发论坛/资源和互联网(Google)上收集的一组信息的子集:-) 基本流程是: 使用AES(使用预设密钥)对数据进行加密。 加密的字节放在XML中(使用base64) 数据从XML收集,并使用相同的预设密钥解密; Object-C代码的加密部分是: char keyPtr [ kCCKeySizeAES128 +1 ]; bzero( keyPtr, sizeof(keyPtr) ); // The secret key is masked for obvious reason, but you can use “12345678912345678912345678912345” [key getCString:keyPtr maxLength:sizeof(keyPtr) encoding:NSUTF8StringEncoding]; NSUInteger dataLength = [data length]; // Initialization vector; dummy in this case 0’s. uint8_t iv[ […]

解密用RSA java加密的“长”消息

嗨这是同一个问题,两年前被问过: Java / JCE:解密用RSA加密的“长”消息 我有一个大字节数组和rsa密钥对,由值1024启动。使用rsa加密和密钥的指定大小是强烈要求,我无法更改它。 所以我不能使用非对称加密对称密钥进行对称加密。 我不能使用任何其他键。 我有一个字节数组,需要返回加密的字节数组。 我想知道是否有任何现成的工具可以解决这个问题? 抱歉这样一个业余的问题,但我真的需要帮助。

SUN JCE / Oracle JCE中的默认RSA填充

你能帮我指出什么是默认的RSA填充。 确切地说,如果我创建如下的密码实例,肯定java正在使用某种填充,因为加密文本字节长度总是显示256字节,用于2048 RSA密钥,无论纯文本是一个字符还是10个字符。 Cipher.getInstance(“RSA”) 如果在Cipher.getInstance(“RSA”)中没有指定填充,我想知道内部默认填充java使用的是什么。 是PKCS#1 v 1.5? 谢谢,山姆

AES-256和PKCS7Padding在Java中失败

我有几个库,C#,PHP和Android,它们都以相同的方式加密/解密字符串,因此它们彼此兼容,即C#写入并加密数据到数据库,PHP可以成功解密它并返回原始字符串。 我现在需要使用标准的Java应用程序做同样的事情,所以我从我的Android库中获取代码并需要库,但我得到了一个例外。 据我所知,代码不是特定于Android的,所以它应该不是问题。 以下是我的加密function public static String encrypt(String plainPasword) { String password = “”; try { SecretKeySpec key = new SecretKeySpec(“hcxilkqbbhczfeultgbskdmaunivmfuo”.getBytes(“US-ASCII”), “AES”); IvParameterSpec iv = new IvParameterSpec(“ryojvlzmdalyglrj”.getBytes(“US-ASCII”)); Cipher cipher = Cipher.getInstance(“AES/CBC/PKCS7Padding”); cipher.init(Cipher.ENCRYPT_MODE, key, iv); byte[] encoded = cipher.doFinal(plainPasword.getBytes()); password = new String(Base64.encodeBase64(encoded)); } catch (Exception ex) { System.err.println(“Encryption Exception: ” + ex.toString()); } return password; […]

java中的密码填充字符串是什么?

每个人都在讨论密码中的填充方案,但是需要传递给密码的实际字符串是什么? 我不在乎它们是对称的还是非对称的,我只想要一个可能的值列表。

Java 7并且无法生成DH密钥对

我读了一篇关于当服务器发出长度超过1024位的密钥时出现错误’无法生成DH密钥对’的post。 下载JCE无限量jar子应该可以解决这个问题。 在测试环境中,我遇到了以下内容,对于同一个Web服务器,如果我使用Java 6,在执行https查询时没有出现任何错误,但是如果我使用Java 7则会得到“无法生成DH密钥对”。 我尝试更换JCE无效的jar文件,但仍然得到相同的错误。 自2007年以来报告了该错误,但为什么它运行Java 6而不是Java 7? 要下载的文件不是正确的吗? 我从以前的postJava获得了链接:为什么SSL握手会给出“无法生成DH密钥对”的exception? 。 此时我不知道该怎么做。 如果我尝试加载BouncyCastle提供程序,我会得到一个ArrayOutOfIndexexception。 我的服务器只允许DH算法,所以我不能使用上面post中建议的其他算法。

我们如何将字符串从PEM转换为DER格式

从以下格式发送字符串: —–BEGIN RSA PUBLIC KEY—– MIGHAoGBANAahj75ZIz9nXqW2H83nGcUao4wNyYZ9Z1kiNTUYQl7ob/RBmDzs5rY mUahXAg0qyS7+a55eU/csShf5ATGzAXv+DDPcz8HrSTcHMEFpuyYooX6PrIZ07Ma XtsJ2J4mhlySI5uOZVRDoaFY53MPQx5gud2quDz759IN/0gnDEEVAgED —–END RSA PUBLIC KEY—– 如何从此字符串构造PublicKey对象? 尝试了以下删除页眉和页脚和base64解码缓冲区 public static PublicKey getFromString(String keystr) throws Exception { //String S1= asciiToHex(keystr); byte[] keyBytes = new sun.misc.BASE64Decoder().decodeBuffer(keystr); X509EncodedKeySpec spec = new X509EncodedKeySpec(keyBytes); KeyFactory kf = KeyFactory.getInstance(“RSA”); return kf.generatePublic(spec); } 这可能会作为无效的密钥格式失败,也会失败 java.security.spec.InvalidKeySpecException: java.security.InvalidKeyException: IOException: algid parse error, not a sequence at sun.security.rsa.RSAKeyFactory.engineGeneratePublic(RSAKeyFactory.java:188) at […]

Java X509证书解析和validation

我试图在几个步骤中处理X509证书并遇到几个问题。 我是JCE的新手,所以我还没有完全了解所有内容。 我们希望能够根据不同的编码(PEM,DER和PCKS7)解析几个不同的X509证书。 我使用FireFox(证书包括链)以PEM和PCKS7格式从https://belgium.be导出相同的证书。 我已经留下了一些问题所不需要的线条 public List parse(FileInputStream fis) { /* * Generate a X509 Certificate initialized with the data read from the inputstream. * NOTE: Generation fails when using BufferedInputStream on PKCS7 certificates. */ List certificates = null; log.debug(“Parsing new certificate.”); certificates = (List) cf.generateCertificates(fis); return certificates; } 只要我使用FileInputStream而不是PCKS7的BufferedInputStream,这段代码工作正常,我觉得这很奇怪? 但我可以忍受它。 下一步是validation这些证书链。 1)检查所有证书是否都有有效日期(简单)2)使用OCSPvalidation证书链(如果证书中未找到OCSP URL,则回退到CRL)。 这是我不完全确定如何处理这个问题的地方。 […]