Tag: 加密

无法使用开放SSL解密RSA数据

我尝试使用openssl创建的公钥在matlab中加密一些数据 我用以下方法创建了密钥: openssl genrsa -des3 -out private.pem 1024 openssl rsa -in private.pem -pubout -outform DER -out public.der 我使用这个matlab代码(使用Java库)加密我的数据: import java.security.spec.RSAPublicKeySpec import javax.crypto.Cipher; import java.security.KeyFactory import java.math.BigInteger fid = fopen(‘public.der’); a = fread(fid); key = java.security.spec.X509EncodedKeySpec(a); kf = KeyFactory.getInstance(‘RSA’); KEY = kf.generatePublic(key); cipher = Cipher.getInstance(‘RSA/ECB/PKCS1Padding’); cipher.init(Cipher.ENCRYPT_MODE, KEY) plaintextBytes = [24]; ciphertext = cipher.doFinal(plaintextBytes)’ ; fid2 = […]

如何从AES-256切换到AES-128?

有很多关于AES的问题,但我有以下问题。 我目前正在使用以下AES实现来加密数据 byte [] PRFkey = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}; byte [] plaintext = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}; SecretKeySpec encryptionKey=new SecretKeySpec(PRFkey, “AES”); Cipher cipher=Cipher.getInstance(“AES”); cipher.init(Cipher.ENCRYPT_MODE, encryptionKey); byte[] encryptedData=cipher.doFinal(plaintext); 事实certificate,结果是32字节(256位)。 所以我使用的是AES-256。 这个实现对我来说很慢。 如何切换到AES-128? 我不需要任何填充或操作模式或密钥散列。 先谢谢你。

Java:写入和读取基于密码的加密私钥

我试图从文件中读取基于密码的加密私钥,但我得到以下exception: java.io.IOException: DerInputStream.getLength(): lengthTag=109, too big. at sun.security.util.DerInputStream.getLength(DerInputStream.java:561) at sun.security.util.DerValue.init(DerValue.java:365) at sun.security.util.DerValue.(DerValue.java:294) at javax.crypto.EncryptedPrivateKeyInfo.(EncryptedPrivateKeyInfo.java:84) … 这是我加密和写入私钥的方式: public static void savePrivateKeyToDisk(PrivateKey privateKey, String passord){ try { // unencrypted PKCS#8 private key byte[] encodedPrivateKey = privateKey.getEncoded(); String MYPBEALG = “PBEWithSHA1AndDESede”; int count = 20; SecureRandom random = new SecureRandom(); byte[] salt = new byte[8]; random.nextBytes(salt); // Create […]

用AES腌制

我是一个加密新手,但需要在存储到数据库之前加密敏感的个人数据。 我打算在CBC上使用AES,但也想用盐。 然而,我无法找到一种方法来做到这一点(除了BouncyCastle,我的主机不准备出于某种原因)所以我决定通过在要加密的文本末尾添加一个随机字符串来添加一个: SecretKeySpec skeySpec = new SecretKeySpec(key, “AES”); byte[] iv = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; IvParameterSpec ivspec = new IvParameterSpec(iv); Cipher cipher = Cipher.getInstance(“AES/CBC/PKCS5Padding”); cipher.init(Cipher.ENCRYPT_MODE, skeySpec, ivspec); String plainText = “This is my plain text”; System.out.println(“**plainText: ” + plainText); String […]

JavaCard中SDA和DDA之间的区别?

我有一个小程序(您可以看一下JavaCard小程序无法使用RSA加密 )。 Applet在构造函数中生成RSA公钥和私钥,并使用APDU命令加密某些​​字节数组。 Applet在文档中使用KeyBuilder.LENGTH_RSA_2048生成公钥和私钥,卡片令人遗憾,JavaCard仅在DDA中支持2048位密钥长度。 所以问题是什么是DDA和SDA。 他们之间的差异? 主要问题是:如何在这种模式下安装(或运行?)applet? 我发现: 更新1 :SDA – 静态数据认证DDA – 动态数据认证

3DES解密错误密钥长度无效

我正在使用3DESC解密数据,但我得到以下exception java.security.InvalidKeyException: Invalid key length: 16 bytes 我的代码: public static byte[] decrypt3DESCBC(byte[] keyBytes, byte[] ivBytes, byte[] dataBytes) { try { AlgorithmParameterSpec ivSpec = new IvParameterSpec(ivBytes); SecretKeySpec newKey = new SecretKeySpec(keyBytes, “DESede”); Cipher cipher = Cipher.getInstance(“DESede/CBC/NoPadding”); cipher.init(Cipher.DECRYPT_MODE, newKey, ivSpec); // Causes Exception return cipher.doFinal(dataBytes); } catch (Exception e) { e.printStackTrace(); } return null; } 打印上面使用的所有字节数组 keyBytes […]

AES加密Java到c#

我有以下代码,在java中为我加密/解密数据 我需要在Windows Phone(8)设备上加密/解密C#中的数据,并且相同的数据应该能够使用此java代码进行解密/加密。 在Windows Phone中C#中这个java代码的等效代码是什么? public class AESencrp { private static final String ALGO = “AES”; private static final byte[] keyValue = new byte[] { ‘S’, ‘D’, ‘P’, ‘i’, ‘b’, ‘m’, ‘B’,’H’, ‘A’, ‘R’, ‘T’,’I’, ‘P’, ‘K’, ‘e’, ‘y’ }; public static String encrypt(String Data) throws Exception { System.out.println(“………….Encryption start…………”); Key key = generateKey(); System.out.println(“Key […]

PHP,Java,Javascript之间的AES互操作性

我正在开发一个需要加密的HTTP API。 我曾尝试使用AES来获得Java,PHP和Javascript之间的兼容性,但到目前为止,我已经设法获得Java PHP,然后是Java Javascript,但不能同时获得PHP和Javascript。 有没有人有过实现这些语言之间的互操作性的经验? 任何建议将不胜感激。 谢谢

下载的txt文件变得萎缩

我正在尝试用我的servlet编写一个txt文件并将其发送到我的桌面应用程序。 桌面应用程序将文件保存在本地磁盘上。 下载大二进制文件没有问题,但是txt文件是小错过最终字符。 例如,servlet发送长度为523KB的txt文件,但是当我将它保存在桌面应用程序上时,文件长度是496KB? 这是servlet代码: final int BUFFER_SIZE = 4096; FileInputStream in = new FileInputStream(file); OutputStream out = response.getOutputStream(); byte buffer[] = new byte[BUFFER_SIZE]; for (int nread = 0; (nread = in.read(buffer)) != -1;) { out.write(buffer, 0, nread); } out.flush(); out.close(); in.close(); 这是桌面应用程序代码(我使用HttpClient 4): response = httpclient.execute(httppost); resEntity = response.getEntity(); InputStream in = resEntity.getContent(); in […]

Java解密 – 使用填充密码解密时,输入长度必须是8的倍数

我有一个安全课程的项目,但我有一个问题。 基本上,我正在尝试加密,然后解密密码,但我得到这个错误的解密。 “使用填充密码解密时,输入长度必须是8的倍数” 我这样做是对的吗? 我正在关注2012年的一篇文章。 它还安全吗? 我也尝试更换算法,但似乎没有任何工作: “AES”,“RSA / ECB / PKCS1Padding”,“PBEWithHmacSHA256AndDESede”……以及更多 我得到: 线程“main”中的exceptionjava.security.NoSuchAlgorithmException:RSA / ECB / PKCS1Padding SecretKeyFactory not not import java.io.IOException; import java.io.UnsupportedEncodingException; import java.security.GeneralSecurityException; import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.PBEKeySpec; import javax.crypto.spec.PBEParameterSpec; import java.util.Base64; public class ProtectedConfigFile { private static final char[] PASSWORD = “ytfchchchgcv”.toCharArray(); private static final byte[] SALT […]