`

java中的加密技术

 
阅读更多
本文转载自:http://blog.csdn.net/micaixiaoduanku/article/details/9699711
全部示例代码:
public class Main {
public static void main(String[] args) throws NoSuchAlgorithmException, UnsupportedEncodingException {
//-------------------加密过程---------------------------------
//产生一个key,需要关联一种“DES”算法
KeyGenerator keyGenerator = KeyGenerator.getInstance("DES");
SecretKey deskey = keyGenerator.generateKey();
//需要加密的info
String info = "12345678";
//输出加密前的密文内容
System.out.println(""+info);
//产生一个Random
SecureRandom sr = new SecureRandom();
byte[] cipherByteEncrypt = null; 
try {
Cipher c1 = Cipher.getInstance("DES");
c1.init(Cipher.ENCRYPT_MODE, deskey, sr);
//生成密文
cipherByteEncrypt = c1.doFinal(info.getBytes()); 
} catch (Exception e) {
e.printStackTrace(); 
}
//输出加密后的密文内容
System.out.println(""+new String(cipherByteEncrypt,"ISO-8859-1"));


//-------------------解密过程-----------------------------------
//产生一个Random
sr = new SecureRandom(); 
byte[] cipherByteDecrypt = null; 
try {
Cipher c1 = Cipher.getInstance("DES");
c1.init(Cipher.DECRYPT_MODE, deskey, sr);
//解析密文
     cipherByteDecrypt = c1.doFinal(cipherByteEncrypt); 
} catch (Exception e) {
e.printStackTrace(); 
}
System.out.println(""+new String(cipherByteDecrypt,"ISO-8859-1"));

}

}
补充一个问题:

为什么在代码中会有使用ISO-8859-1来编码.

看如下代码:

bytebytes[] = new byte[] { 50, 0, -1, 28, -24 };

String string = new String(bytes);

byte[] ret = string.getBytes();

查看ret的数据发现是50, 0, -17, -65, -67, 28, -17, -65, -67,发现数据并不是原来的数据。

而使用如下代码就可以得到原来的数据:

bytebytes[] = new byte[] { 50, 0, -1, 28, -24 };

StringisoString = new String(bytes, "ISO-8859-1");

byte[] isoret = isoString.getBytes("ISO-8859-1");

这是为什么呢?原因是第一种方法默认是用UTF-8编码来生成String的,用System.getProperty("sun.jnu.encoding")可以得到Android默认编码是UTF-8。UTF-8是可变长度的编码,原来的字节数组就被改变了。而ISO8859-1通常叫做Latin-1,Latin-1包括了书写所有西方欧洲语言不可缺少的附加字符,其中 0~127的字符与ASCII码相同,它是单字节的编码方式,这样第二种方式生成的String里的字节数组就跟原来的字节数组一样。在new String使用其他编码如GBK,GB2312的话一样也会导致字节数组发生变化,因此要想获取String里单字节数组,就应该使用iso8859-1编码。
分享到:
评论

相关推荐

    Java 加密技术汇总

    本文将深入探讨Java中常用的加密技术,包括基本的单向加密算法、对称加密、非对称加密以及数字证书等相关知识点。 #### 二、基本概念 **单向加密算法**是一种加密过程不可逆的算法,即一旦数据被加密,就不能被...

    java加密技术详解

    ### Java加密技术详解:以MD5为例 在Java中,加密技术是确保数据安全和完整性的关键工具之一。本文将深入探讨Java中的加密技术,特别是MD5加密算法,通过实例和代码片段,帮助读者理解其工作原理及如何在实际项目中...

    Java加密技术

    Java加密技术

    运用加密技术保护java源代码

    因此,运用加密技术保护Java源代码成为了一项重要的课题。 ### Java源代码加密的重要性 Java源代码加密主要涉及两个层面:一是源代码本身的安全,二是编译后的字节码(.class文件)的安全。对于源代码,加密可以...

    基于JAVA的加密算法(包括10种加密技术)

    Java加密技术(一) 关键字: java 加密基础, base64, md5, mac, sha, 单向加密 。。。。。。。。。。。。。。

    java加密技术大全

    这些Java加密技术的理解和应用对于任何Java开发者来说都是必备的技能,特别是在涉及用户隐私、数据安全和网络通信的项目中。通过学习和实践这些技术,开发者能够更好地保护数据,防止信息被窃取或篡改。

    基于Java实现的同态加密算法的实现

    同态加密是一种高级的加密技术,它允许对加密数据进行计算,而无需先解密。在同态加密下,操作的结果仍然是加密的,但与原始未加密数据进行相同的操作会得到相同的结果。这一特性使得同态加密在数据隐私保护、云计算...

    java加密技术 (网页版)

    哈希函数也是加密技术中的关键部分,例如MD5和SHA系列。它们可以将任意大小的数据映射为固定长度的摘要,但不能逆向还原原始数据,常用于验证数据完整性和密码存储。Java的`java.security.MessageDigest`类提供了...

    Java项目加密技术

    Java项目中的加密技术是保障信息安全的关键手段,涵盖了多种加密解密算法和证书体系。下面将详细介绍这些技术: 1. **基本的单向加密算法**: - **BASE64**:其实是一种编码方式,而非真正的加密算法。它将任意...

    Java加密技术(一)

    总之,Java加密技术提供了丰富的工具和算法,可以帮助开发者构建安全的应用程序。然而,随着技术的发展,加密算法的安全性也需要不断更新,以抵御新的攻击手段。在设计系统时,应考虑最新的安全标准和最佳实践,确保...

    java 文字加密实例

    然而,我们可以基于这个主题,深入探讨Java中的文本加密技术,包括其背景、原理以及常见加密算法的实现。 ### Java中的文字加密 在计算机科学中,加密是保护数据安全的关键技术之一,它通过将可读信息转换为看似...

    JAVA加密技术.docx

    在Java编程中,加密技术是确保信息安全的关键组成部分。本文将探讨几种常见的加密算法,包括单向加密和对称及非对称加密算法。首先,我们来看基础的单向加密算法,如BASE64、MD5、SHA和HMAC。 **BASE64** 是一种...

    Java RSA加密前后端实现

    Java RSA加密技术是一种广泛应用于网络通信安全中的非对称加密算法,主要特点是公钥和私钥成对出现,其中公钥用于加密,私钥用于解密。这种加密方式的安全性较高,因为即使加密数据被截获,没有相应的私钥也无法解密...

    java加密技术

    以上便是Java加密技术中的一些核心知识点,从基本的单向加密到复杂的非对称加密算法,以及数字签名和数字证书的应用,都是为了确保数据的安全和完整。随着技术的发展,加密技术也在不断进步,Java提供了丰富的API...

    JAVA文件加密打包实例

    在Java编程领域,文件加密和打包是常见的需求,特别是在...通过以上分析,我们可以看出"JAVA文件加密打包实例"是一个涵盖了Java文件加密和打包核心技术的项目,对于学习和实践数据安全和文件管理有着重要的参考价值。

    java加密狗读取例子

    Java加密狗读取例子主要涉及的是在Java编程环境中与硬件加密设备进行交互的技术。加密狗是一种硬件安全模块,用于保护软件免受非法复制和逆向工程。在这个特定的例子中,我们关注的是ET199型号的加密狗,它通常被...

    JAVA数据加密解密的实例

    在JAVA中,我们通常使用对称加密和非对称加密两种方法。对称加密使用相同的密钥进行加密和解密,如DES(Data Encryption Standard)和AES(Advanced Encryption Standard)。非对称加密则使用一对公钥和私钥,公钥...

    java中md5加密技术

    总之,Java中的MD5加密技术为数据提供了基础的安全保障,但鉴于其已知的弱点,应结合其他更安全的加密算法或机制,如SHA系列,或者使用更先进的密码学技术。在实际应用中,还需要考虑合规性和安全策略,确保数据的...

Global site tag (gtag.js) - Google Analytics