Tag: 密码学

为什么在用充气城堡解密后附加这些方形符号?

我创建了一个简单的java方法,使用充气城堡库加密和解密文本。 加密按预期工作,但是当我解密某些内容时,我会在最后得到这些额外的方形符号: 我认为这可能与填充有关,但我已经按照bouncy castle网站上的例子进行了操作,所以我真的不明白为什么我会得到这种输出。 这是我正在使用的代码: [主要] public static void main(String[] argv) { String ciphertext = “PlJR5pzbowsuzHIc9iTKHg==”; String decrypted; CryptoCodec codec = new CryptoCodec(); decrypted = codec.exec(“AES”, “xxxxooooxxxxoooo”, ciphertext, false); System.out.println(“Ciphertext: ” + ciphertext); System.out.println(“Decrypted: ” + decrypted); } [CryptoCodec] // Eod: (true) Encrypt or (false) decrypt. public String exec(String algorithm, String key, String data, boolean […]

使用bouncycastle解密aes-256-cbc

bouncyCastle新手,任何帮助表示赞赏。 我正在尝试使用bounncycastle java API解密由我的系统上的第三方加密的文件。 它似乎解密文件很好,除了下面解密文件开头的垃圾数据blob PaddedBufferedBlockCipher aes = new PaddedBufferedBlockCipher(new CBCBlockCipher( new AESEngine())); CipherParameters ivAndKey = new ParametersWithIV(new KeyParameter(DatatypeConverter.parseHexBinary(keyInfo.getKey())), DatatypeConverter.parseHexBinary(keyInfo.getInitializationVector())); aes.init(false, ivAndKey); byte[] decryptedBytes = cipherData(aes, Base64.decodeBase64(inputStreamToByteArray(new FileInputStream(encryptedFile)))); return new ByteArrayInputStream(decryptedBytes); private static byte[] cipherData(PaddedBufferedBlockCipher cipher, byte[] data) throws Exception { int minSize = cipher.getOutputSize(data.length); byte[] outBuf = new byte[minSize]; int length1 = cipher.processBytes(data, 0, […]

Java如何使用私钥文件而不是PEM来解密?

使用Java和Bouncy Castle 1.52,我可以使用以下代码通过PEM证书加载私钥。 我还有一个PKCS8格式的private.key文件。 直接使用private.key文件而不是PEM的代码是什么? String keyPath = “C:\\RSA7\\privatenopass.pem”; BufferedReader br = new BufferedReader(new FileReader(keyPath)); PEMParser pp = new PEMParser(br); PEMKeyPair pemKeyPair = (PEMKeyPair) pp.readObject(); KeyPair kp = new JcaPEMKeyConverter().getKeyPair(pemKeyPair); pp.close(); cipher.init(Cipher.DECRYPT_MODE, kp.getPrivate());

如何从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? 我不需要任何填充或操作模式或密钥散列。 先谢谢你。

用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 […]

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 […]

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 […]

java加密方法等效于节点js crypto

我有java加密function代码 public String encrypt(String Data, String keySet) throws Exception { byte[] keyByte = keySet.getBytes(); Key key = generateKey(keyByte); Cipher c = Cipher.getInstance(“AES”); c.init(Cipher.ENCRYPT_MODE, key); //2 byte[] encVal = c.doFinal(Data.getBytes()); //1 byte[] encryptedByteValue = new Base64().encode(encVal); //3 String encryptedValue = new String(encryptedByteValue); //4 return encryptedValue; } private static Key generateKey(byte[] keyByte) throws Exception { Key key […]

将加密的图像字节保存到文件并恢复到java中的原始图像

我有一个图像加密和解密的问题,原因现在已经确定,但我无法找到解决方案。 我正在尝试实施这个项目 但问题是加密后的图像字节在使用rasterclass和ImageIO类写入图像文件后无法恢复 我的问题,尝试过的代码和解释都在这里提交 我必须在加密图像(Stegnography)中嵌入文本。 我用Google搜索并找到了在图片中嵌入文字的代码。 但我必须首先加密图像并在此加密图像中嵌入文本。 我的尝试如下。 /* * To change this template, choose Tools | Templates * and open the template in the editor. */ package tbn; import java.awt.Graphics2D; import java.awt.Point; import java.awt.Transparency; import java.awt.image.BufferedImage; import java.awt.image.ColorModel; import java.awt.image.ComponentColorModel; import java.awt.image.DataBuffer; import java.awt.image.DataBufferByte; import java.awt.image.Raster; import java.awt.image.WritableRaster; import java.io.File; import java.io.IOException; import java.security.InvalidKeyException; […]

AES解密与充气城堡

我试图调整http://www.java2s.com/Code/Java/Security/Basicsymmetricencryptionexample.htm中的示例代码,必须使用3个参数调用,模式(加密或解密),IV和密钥。 它还可以读取和写入特定文件。 到目前为止,我忽略了给定的IV和键,直到我完成其余的运行。 我的代码成功地从文件加密明文,并将密文写入文件,但解密不起作用。 似乎解密模式读取的字节数多于加密写入的字节数,并且我得到块对齐错误。 我确定解密部分的某处存在一些基本错误,但我不知道它是什么。 如果有人能够识别问题或者可以看到任何可能导致它的明显错误,请告诉我。 错误发生在 try{ ctLength += cipher.doFinal(cipherText, ctLength);}catch{IllegalBlockSizeException e) 代码行: import java.io.BufferedWriter; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.FileReader; import java.io.BufferedReader; import java.io.IOException; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.io.Writer; import java.nio.charset.Charset; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; import java.security.NoSuchProviderException; import java.security.Security; import java.util.Arrays; import javax.crypto.BadPaddingException; […]