java对字符串的加密和解密_关于加密:使用Java加密和解密字符串

我是密码学的新手。 我希望学习如何在文件中加密和解密文本...当我在net中引用相关文章时。 我怀疑对同一文本进行多次加密后,单个文本的加密文本是否相同? 谁能解决我的疑问?

如何在Java中加密字符串的可能重复项

rgagnon.com/javadetails/java-0400.html

public String encrypt(String str) {

try {

// Encode the string into bytes using utf-8

byte[] utf8 = str.getBytes("UTF8");

// Encrypt

byte[] enc = ecipher.doFinal(utf8);

// Encode bytes to base64 to get a string

return new sun.misc.BASE64Encoder().encode(enc);

} catch (javax.crypto.BadPaddingException e) {

} catch (IllegalBlockSizeException e) {

} catch (UnsupportedEncodingException e) {

} catch (java.io.IOException e) {

}

return null;

}

public String decrypt(String str) {

try {

// Decode base64 to get bytes

byte[] dec = new sun.misc.BASE64Decoder().decodeBuffer(str);

// Decrypt

byte[] utf8 = dcipher.doFinal(dec);

// Decode using utf-8

return new String(utf8,"UTF8");

} catch (javax.crypto.BadPaddingException e) {

} catch (IllegalBlockSizeException e) {

} catch (UnsupportedEncodingException e) {

} catch (java.io.IOException e) {

}

return null;

}

}

这是使用该类的示例:

try {

// Generate a temporary key. In practice, you would save this key.

// See also Encrypting with DES Using a Pass Phrase.

SecretKey key = KeyGenerator.getInstance("DES").generateKey();

// Create encrypter/decrypter class

DesEncrypter encrypter = new DesEncrypter(key);

// Encrypt

String encrypted = encrypter.encrypt("Don't tell anybody!");

// Decrypt

String decrypted = encrypter.decrypt(encrypted);

} catch (Exception e) {

}

Pratik,get实例中的DES是什么?

@ user775:javax.crypto.KeyGenerator类的方法getInstance(String algorithm),返回该算法的javax.crypto.KeyGenerator对象。 还有一个java.security.Key,它是有效的DES算法加密密钥。

什么是byte [] enc = ecipher.doFinal(utf8);

什么是byte [] utf8 = dcipher.doFinal(dec)?

密码和密码似乎是javax.crypto.Cipher的实例:docs.oracle.com/javase/8/docs/api/javax/crypto/Cipher.html

密码和密码应该具有什么价值? 至少可以解释一下它的麻烦,

Downvote。 您没有定义ecipher和dcipher。

这个答案还不清楚。 请告诉我们需要导入哪些类。 还添加一个完全正常的代码。

I had a doubt that whether the

encrypted text will be same for single

text when encryption done by multiple

times on a same text??

这在很大程度上取决于您使用的加密算法:

某些(大多数)(成熟)算法的目标是,加密两次后,加密的文本会有所不同。这样做的一个原因是,攻击者无法充分了解纯文本和加密文本,因此无法计算密钥。

基于以下事实的其他算法(主要是一种方式的哈希加密算法),例如MD5或SHA,基于以下事实:对于每个加密/哈希,哈希文本都是相同的。

当使用相同的密钥加密纯文本时,加密的是否相同取决于算法和协议。在密码学中,有初始化向量IV:http://en.wikipedia.org/wiki/Initialization_vector与各种密码一起使用,使得使用相同密钥加密的同一纯文本给出了多种密码文本。

我建议您阅读更多有关Wikipedia,Bruce Schneier http://www.schneier.com/books.html和David Hook撰写的"使用Java进行密码学"上的密码学的信息。最后一本书充满了http://www.bouncycastle.org库的用法示例。

如果您对密码学感兴趣,可以使用CrypTool:http://www.cryptool.org/ CrypTool是一种免费的开源电子学习应用程序,在全世界范围内用于加密算法的实现和分析。

先生,非常感谢您的答复和指导,先生。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值