Tag: 加密

PBEKeySpec对iterationCount和keyLength参数有何影响?

深入研究java加密和散列世界,我看到了PBEKeySpec类的构造函数示例,其中包含iterationCount和keyLength参数的各种值。 似乎没有什么能解释这些参数的影响或意义。 我假设keyLength是密钥的长度,因此密钥长度的32位加密值为32,但这种假设感觉不对。 我对iterationCount猜测是每个char加密的次数,也不再感受到对这个假设的喜爱。 欢迎链接到信息或解释。

在Android中加密和解密zip文件?

我正在使用此代码: http : //examples.javacodegeeks.com/core-java/crypto/encrypt-decrypt-file-stream-with-des用于加密我在Android应用程序中使用的zip文件。它工作得非常好当我使用java代码尝试使用zip文件时,但是当我在Android应用程序中尝试相同的方法时 – 它解密文件但我得到的文件已损坏且无法打开它。 日志: 04-19 10:58:25.711: W/System.err(6752): net.lingala.zip4j.exception.ZipException: zip headers not found. probably not a zip file 04-19 10:58:25.721: W/System.err(6752): at net.lingala.zip4j.core.HeaderReader.readEndOfCentralDirectoryRecord(HeaderReader.java:122) 当我尝试使用winzip在Windows上打开相同的文件时,它会显示: Does not appear to be a valid archive file. 更新:: public class EncryptDecryptFileStreamWithDES { private static Cipher ecipher; private static Cipher dcipher; // 8-byte initialization vector private static byte[] […]

如何在Java中为现有私钥添加密码

假设我使用openssl创建了以前创建的私钥,但我决定不使用密码来保护它: —–BEGIN RSA PRIVATE KEY—– BASE64 ENCODED DATA —–END RSA PRIVATE KEY—– 但后来我意识到我想保护它。 我知道如何使用openssl保护它,但我需要用Java来实现它。 可能吗 ?

快速,简单易用的对称密码,用于Java中的整数加密

在Java中,具有这些属性的整数加密的密码函数是什么?: 快速 对称密钥算法 使用简单(即使用几行代码而不包含外部库) 可以指定输出长度(例如20个字符) 我只需要用它来加密/解密整数。

javax.crypto.Cipher为RSA使用了哪个填充

我需要通过RSA解密消息,以便通过不安全的通道发送消息,但我害怕Padding Oracle Attack 。 因此我已经问过以下问题: 如何validationRSA加密消息的完整性? 如何使用javax.crypto.Cipher确保RSA密码的消息完整性 像第一个问题中建议的那样, 但是,由于您使用的是高级加密库,因此您不必担心这一点。 该图书馆的作者应该照顾它。 我不应该考虑。 据我所知, PKCS#1 v1.5的RSA实现容易受到Padding Oracale Attack ,因此OAEP不是(假设它已正确实现) 因此,我想知道Java 7的javax.crypt.Cipher使用了哪个填充实现

Java安全类强制转换exception

嗨,我是Java安全的初学者,我在调用时遇到以下问题: Cipher cipher = Cipher.getInstance(“RSA/ECB/PKCS1Padding”); 我收到了错误: java.lang.ClassCastException: com.sun.crypto.provider.RSACipher cannot be cast to javax.crypto.CipherSpi 在我的war文件中还有5个用于支付网关加密的jar文件: CRYPTIX-JCE-api.jar文件 CRYPTIX-JCE-provider.jar CRYPTIX-消息api.jar文件 CRYPTIX-的OpenPGP-provider.jar CRYPTIX-PKI-api.jar文件 如果没有这5个JAR文件,那么Cipher.getInstance()可以工作,但这是不可能的,因为我需要JAR来进行支付信息加密。 那里的任何人都可以告诉我如何克服这个问题的道路?

解密在android上加密的桌面上的数据

我有一个应用程序,它加密一些文本字符串,然后将它们写入文件。 应用程序的桌面版本正在读取文件并解密数据。 问题是,无论何时我在桌面版本上解密,我都会得到一个“javax.crypto.BadPaddingException:给定最终块没有正确填充” 应用程序和桌面都使用相同的代码: import java.security.SecureRandom; import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax.crypto.SecretKey; import javax.crypto.spec.SecretKeySpec; public class SSL { private final static String HEX = “0123456789ABCDEF”; public static String encrypt(Session current, String cleartext) throws Exception { byte[] rawKey = getRawKey(current.getCurrentSession().getBytes()); byte[] result = encrypt(rawKey, cleartext.getBytes()); return toHex(result); } public static String decrypt(Session current, String encrypted) throws […]

AES加密Java – > PHP – > Java

在我的Android应用程序中,我正在与Web服务进行通信,发送和响应的数据使用AES加密进行加密。 所以我做的是以下内容。 我正在向share.php发送base64编码的AES加密JSON字符串 然后Share.php将解密此字符串并将其插入数据库。 之后PHP将加密en编码响应。 然后我的Android应用程序需要解码以解密此消息。 但PHP响应的解密并不是很顺利。 这是我的AES.java : public class AES { private final String characterEncoding = “UTF-8”; private final String cipherTransformation = “AES/ECB/PKCS5Padding”; private final String aesEncryptionAlgorithm = “AES”; public byte[] decrypt(byte[] cipherText, byte[] key, byte [] initialVector) throws NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, InvalidAlgorithmParameterException, IllegalBlockSizeException, BadPaddingException { Cipher cipher = Cipher.getInstance(cipherTransformation); SecretKeySpec secretKeySpecy = […]

RSA Cipher的线程安全性

正如标题所说,我想知道在给定RSA算法的情况下如何在multithreading环境中最好地使用Cipher实例。 我已经阅读了关于这个主题的几个问题,以及我收集的内容: 密码不是线程安全的,因为它在加密/解密时保持内部状态 如果使用AES,则doFinal()会将初始化向量重置为上一个已知值,因此每次都应生成新的Cipher实例 我的问题 如果选择的算法是RSA,是否只能调用一次cipher.init() ? 这与第二个子弹相反,如下面的代码所示。 我相信因为没有初始化向量。 此外,密码仅用于解密数据。 我应该只在cipher.doFinal()调用上同步吗? 处理多个线程请求加密服务的常用方法是什么,我应该将密码池作为一些代理后面的阻塞队列吗? 代码示例: public class RsaPrototype { private static PrivateKey privKey; private static Cipher cipher; private static final String PRIVATE_KEY_PATH =”./privK.pem”; /* * ALGORITHM/BLOCKING_MODE/PADDING_SCHEMA */ private static final String CIPHER_SPECIFICATION = “RSA/None/NoPadding”; private static final String RSA_PROVIDER =”BC”; static { Security.addProvider(new BouncyCastleProvider()); importPrivateKey(); cipher = […]

Java公钥私钥解密问题

我正在尝试加密和解密消息,如下面的代码所示。 基本上我想用公钥加密消息,并将该加密消息从字节数组转换为String。 并将此字符串解密为原始文本。 以下是这两种方法。 这里加密工作正常,但解密失败(错误是“数据必须从零开始”)。 我认为这是因为我将加密的字节数组转换为String。 我该如何解决这个问题? (我希望将加密的字节数组作为字符串并用于解密)是否有其他方法(使用公钥和私钥) public static String getEncryptedMessage(String publicKeyFilePath, String plainMessage) { byte[] encryptedBytes; try { Cipher cipher = Cipher.getInstance(“RSA”); byte[] publicKeyContentsAsByteArray = getBytesFromFile(publicKeyFilePath); PublicKey publicKey = getPublicKey(publicKeyContentsAsByteArray); cipher.init(Cipher.ENCRYPT_MODE, publicKey); encryptedBytes = cipher.doFinal(plainMessage.getBytes()); return new String(encryptedBytes); } catch (Throwable t) { } } public static String getDecryptedMessage( String privateKeyFilePath, String encryptedMessage) […]