Tag: 加密

如何用Java中的密码加密和解密String(Pc不是移动平台)?

我想加密一个字符串然后把它放在一个文件上。 也想在我想要的时候解密它。 我不需要非常强大的安全性。 我只是想让其他人更难获取我的数据。 我尝试了几种方法。 这是这些。 Md5加密: 如何在Android中散列字符串? public static final String md5(final String toEncrypt) { try { final MessageDigest digest = MessageDigest.getInstance(“md5”); digest.update(toEncrypt.getBytes()); final byte[] bytes = digest.digest(); final StringBuilder sb = new StringBuilder(); for (int i = 0; i < bytes.length; i++) { sb.append(String.format("%02X", bytes[i])); } return sb.toString().toLowerCase(); } catch (Exception exc) { […]

Java AES加密和解密

我想使用带有16字节密钥的128位AES加密来加密和解密密码。 我在解密值时收到javax.crypto.BadPaddingException错误。 我在解密时错过了什么? public static void main(String args[]) { Test t = new Test(); String encrypt = new String(t.encrypt(“mypassword”)); System.out.println(“decrypted value:” + t.decrypt(“ThisIsASecretKey”, encrypt)); } public String encrypt(String value) { try { byte[] raw = new byte[]{‘T’, ‘h’, ‘i’, ‘s’, ‘I’, ‘s’, ‘A’, ‘S’, ‘e’, ‘c’, ‘r’, ‘e’, ‘t’, ‘K’, ‘e’, ‘y’}; SecretKeySpec skeySpec = […]

如何将Byte数组转换为PrivateKey或PublicKey类型?

我使用RSA算法生成公钥和私钥 final KeyPairGenerator keyGen = KeyPairGenerator.getInstance(ALGORITHM); keyGen.initialize(1024); final KeyPair key = keyGen.generateKeyPair(); final PrivateKey privateKey=key.getPrivate(); final PublicKey publickey=key.getPublic(); 之后,使用Base64编码器对这些密钥进行编码,并将其保存到数据库中。 如何将此编码的字符串转换为java中的私钥和公钥类型是解密文件。 使用Base64Decoder解码此String时将获得一个字节数组。 如何将此Byte数组转换为公钥或私钥类型?

Java AES加密整个字符串

如何使用AES加密整个字符串。 我下面的代码只加密到第一个识别的空间:(。我该如何解决这个问题?谢谢 SecretKeySpec key = new SecretKeySpec(salt.getBytes(), “AES”); Cipher cipher = Cipher.getInstance(“AES/ECB/PKCS5Padding”, “SunJCE”); cipher.init(Cipher.ENCRYPT_MODE, key); String result = new String(cipher.doFinal(message.getBytes())); System.out.println(“Encrypted:” + result); 编辑 OMG我不能相信这一点,我怎么可能想念这个:(因为我的扫描仪是下一个而不是nextLine …这一天有多尴尬这让我感到尴尬,直到现在才真正想到检查那个。问题解决了:)谢谢大家

将字符串转换为加密密钥,反之亦然java

我目前正致力于将键转换为字符串,反之亦然。 它适用于公钥转换,并将私钥转换为String。 由于某种原因,相同的代码不会将String转换回私钥,这是我无法弄清楚的。 转换器代码是: import java.security.KeyFactory; import java.security.PrivateKey; import java.security.PublicKey; import java.security.spec.X509EncodedKeySpec; import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; @SuppressWarnings(“restriction”) public class KeyConvert { public static PublicKey stringToPublicKey(String s) { BASE64Decoder decoder = new BASE64Decoder(); byte[] c = null; KeyFactory keyFact = null; PublicKey returnKey = null; try { c = decoder.decodeBuffer(s); keyFact = KeyFactory.getInstance(“DSA”, “SUN”); } catch […]

无法在Java和PHP之间交换使用AES-256加密的数据

我的问题是:我在Java中加密的东西我可以在Java中完美解密,但PHP mcrypt无法解密。 我用mcrypt加密的东西我可以用mcrypt解密,但不能用Java解密。 我想从Java应用程序发送和接收加密数据到PHP页面,所以我需要它兼容。 这就是我的…… JAVA … public static String crypt(String input, String key){ byte[] crypted = null; try{ SecretKeySpec skey = new SecretKeySpec(Base64.decodeBase64(key), “AES”); Cipher cipher = Cipher.getInstance(“AES/ECB/PKCS5Padding”); cipher.init(Cipher.ENCRYPT_MODE, skey); crypted = cipher.doFinal(input.getBytes()); }catch(Exception e){ } return Base64.encodeBase64String(crypted); } public static String decrypt(String input, String key){ byte[] output = null; try{ SecretKeySpec skey = […]

使用Java进行AES加密和解密

这是我正在做的,看起来有点笨拙,但任何帮助对此问题表示赞赏。 我收到BadPaddingException 。 阅读几乎所有相关主题,但没有找到合适的解决方案。 我是加密解密编程的新手,需要在我的一个Java应用程序中实现它。 谢谢..这是代码看起来如何…. public static void main(String[] args) throws NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException { // TODO Auto-generated method stub String FileName=”encryptedtext.txt”; String FileName2=”decryptedtext.txt”; String pad=”0″; KeyGenerator KeyGen=KeyGenerator.getInstance(“AES”); KeyGen.init(128); SecretKey SecKey=KeyGen.generateKey(); Cipher AesCipher=Cipher.getInstance(“AES”); AesCipher.init(Cipher.ENCRYPT_MODE,SecKey); byte[] byteText=”My name is yogesh”.getBytes(); byte[] byteCipherText=AesCipher.doFinal(byteText); String cipherText = null; try { FileWriter fw=new FileWriter(FileName); BufferedWriter bw=new […]

AES / CBC / PKCS5Padding与AES / CBC / PKCS7Padding具有256个密钥大小的性能java

我目前正在使用AES/CBC/PKCS5Padding来加密具有256字节密钥大小的Java文件,但是我在stackexchange PKCS#5-PKCS#7 Padding上找到了搜索,并且提到了, PKCS#5填充是PKCS#7填充的子集,用于8字节块大小 所以我想知道 对于上述配置, AES/CBC/PKCS7Padding的性能AES/CBC/PKCS7Padding会优于AES/CBC/PKCS5Padding ? 我们如何在Java中配置块大小,如上所述 PKCS#7填充适用于1到255字节的任何块大小。 我的示例代码是, SecureRandom rnd = new SecureRandom(); IvParameterSpec iv = new IvParameterSpec(rnd.generateSeed(16)); KeyGenerator generator = KeyGenerator.getInstance(“AES”); generator.init(256); SecretKey k = generator.generateKey(); Cipher c = Cipher.getInstance(“AES/CBC/PKCS5Padding”); c.init(Cipher.ENCRYPT_MODE, k, iv);

使用bouncycastle签署和validation签名的正确方法

我使用bcmail-jdk16-1.46.jar和bcprov-jdk16-1.46.jar (Bouncycastle库)来签名string ,然后validationsignature 。 这是我签署string code : package my.package; import java.io.FileInputStream; import java.security.Key; import java.security.KeyStore; import java.security.PrivateKey; import java.security.Security; import java.security.Signature; import java.security.cert.X509Certificate; import java.util.ArrayList; import java.util.List; import org.bouncycastle.cert.jcajce.JcaCertStore; import org.bouncycastle.cms.CMSProcessableByteArray; import org.bouncycastle.cms.CMSSignedData; import org.bouncycastle.cms.CMSSignedDataGenerator; import org.bouncycastle.cms.CMSTypedData; import org.bouncycastle.cms.jcajce.JcaSignerInfoGeneratorBuilder; import org.bouncycastle.jce.provider.BouncyCastleProvider; import org.bouncycastle.operator.ContentSigner; import org.bouncycastle.operator.jcajce.JcaContentSignerBuilder; import org.bouncycastle.operator.jcajce.JcaDigestCalculatorProviderBuilder; import org.bouncycastle.util.Store; import sun.misc.BASE64Encoder; public class SignMessage { […]

如何保护/加密Java类?

前段时间,在我的工作中,我需要保护一些课程,以防止其他人阅读代码。 为此,我创建了一个EncryptedClassLoader,它加载了以前加密的类,并且还可以加载普通(未加密)类。 以这种方式工作有点复杂,并且也进行测试(编译,然后加密,然后解密)。 是否有任何免费的框架可以做我需要的,并且易于处理? 我的意思是,不仅混淆,而且还加密文件,所以没有人可以读取或调试这部分代码。 我可以很容易地更改加密密钥(在我的应用程序中,它是硬编码的)。 提前致谢。