常用的加密算法---数字摘要

数字摘要:

数字摘要也称为消息摘要,它是一个唯一对应一个消息或文本的固定长度的值,它是一个单向

Hash函数对消息进行计算产生的。

摘要生成的过程:待摘要串-----> Hash函数-----> 摘要

消息摘要的特点:


1.无论输入的消息多长,计算出来的消息摘要的长度是固定的。例如:MD5 的为128个比特位,SHA-1的为


160个比特位;


2.一般只要输入的消息不同,对其产生的摘要消息也是不相同的,相同的输入必然会产生相同的摘要消息;


3.由于消息摘要并不包含原文的完整信息,因此只能进行正向的消息摘要,而无法从摘要中恢复出原来的消息


甚至根本不可能找到任何与原信息相关的消息。


1.MD5:

基于java的MD5算法的使用:

/**

* 实现MD5的加密

*

* @param con

*   需要加密的字符串

* @return

* @throws Exception

*/

private static byte[] testMD5(String con) throws Exception {

MessageDigest md5 = MessageDigest.getInstance("MD5");

byte[] bytes = md5.digest(con.getBytes("utf-8"));

return bytes;

}

2.SHA(摘要的信息长度160位  最安全的散列算法之一):

/**

*SHA 散列安全算法

*

* @param con

*             待加密的字符串

* @return

* @throws Exception

*/

private static byte[] tstSHA1(String con) throws Exception {

MessageDigest sha = MessageDigest.getInstance("SHA-1");

byte[] bytes = sha.digest(con.getBytes("utf-8"));

return bytes;

}

3.十六进制编码:

/**

* 16进制加密

*

* @param bytes

* @return

*/

private static String bytes2hex(byte[] bytes) {

StringBuilder hex = new StringBuilder();

for (int i = 0; i < bytes.length; i++) {

byte b = bytes[i];

boolean negtive = false;

if (b < 0) {

negtive = true;

}

int inte = Math.abs(b);

if (negtive)

inte = inte | 0x80;

String temp = Integer.toHexString(inte & 0xFF);

if (temp.length() == 1) {

hex.append("0");

}

hex.append(temp.toLowerCase());

}

return hex.toString();

}

/**

* 16进制解密

*

* @param hex

* @return

*/

private static byte[] hex2bytes(String hex) {

byte[] bytes = new byte[hex.length() / 2];

for (int i = 0; i < hex.length(); i = i + 2) {

String subStr = hex.substring(i, i + 2);

boolean negative = false;

int inte = Integer.parseInt(subStr, 16);

if (inte > 127) {

negative = true;

}

if (inte == 128) {

inte = -128;

} else if (negative) {

inte = 0 - (inte & 0x7F);

}

byte b = (byte) inte;

bytes[i / 2] = b;

}

return bytes;

}

4.Base64编码:

/**

* base64 編碼

* @param base64

* @return

* @throws IOException

*/

private static byte[] base642byte(String base64) throws IOException {

BASE64Decoder bs = new BASE64Decoder();

return bs.decodeBuffer(base64);

}

/**

* base64 解码

* @param bytes

* @return

*/

private static String byte2base64(byte[] bytes) {

BASE64Encoder bse = new BASE64Encoder();

return bse.encode(bytes);

}

随着数据化时代的到来,信息的安全性越来越成为我们关注的问题,本期博客写了一些基础的加密算法,希望对大家有用。其他的加密算法我也会在后期的书写中逐渐补上。

时间: 2024-10-08 13:40:21

常用的加密算法---数字摘要的相关文章

常用的加密算法--摘要认证和签名认证的实现

摘要认证的实现 摘要认证实现主要包含四个方面:客户端参数摘要生成.服务端参数摘要检验.服务端响应摘要生成和客户端响应摘要检验. 1.客户端参数摘要生成过程: a.请求参数: b.参数排序: c.将参数串接起来,加上secret,生成待摘要字符串: d.使用MD5等摘要算法生成摘要字符串: e.摘要串.  /**      * @param params 需要传递到服务端的参数      * @return      * @throws Exception      */     private 

和安全有关的那些事(非对称加密、数字摘要、数字签名、数字证书、SSL、HTTPS及其他)

本文原文连接:http://blog.csdn.net/bluishglc/article/details/7585965 转载请注明出处! 对于一般的开发人员来说,很少需要对安全领域内的基础技术进行深入的研究,但是鉴于日常系统开发中遇到的各种安全相关的问题,熟悉和了解这些安全技术的基本原理和使用场景还是非常必要的.本文将对非对称加密.数字摘要.数字签名.数字证书.SSL.HTTPS等这些安全领域内的技术进行一番简要的介绍,解释他们之间的关系,同时补充一些周边话题.   0. 概览--常用安全技

iOS常用的加密算法

在iOS开发中,为了数据的安全经常对内容进行加密,在这儿我们对常用的加密算法进行了总结: 1.MD5 <span style="font-size:18px;">+ (NSString *)md5Hash:(NSString *)str { const char *cStr = [str UTF8String]; unsigned char result[16]; CC_MD5( cStr, strlen(cStr), result ); NSString *md5Resu

常用的加密算法有哪些

常用的加密算法有哪些? DES(Data Encryption Standard):对称算法,数据加密标准,速度较快,适用于加密大量数据的场合: 3DES(Triple DES):是基于DES的对称算法,对一块数据用三个不同的密钥进行三次加密,强度更高: RC2和RC4:对称算法,用变长密钥对大量数据进行加密,比 DES 快: IDEA(International Data Encryption Algorithm)国际数据加密算法,使用 128 位密钥提供非常强的安全性: AES(Advanc

数字摘要

数字摘要原理 数字摘要也称为信息摘要,他是唯一对应一个消息或者文本的固定长度的值,他有单向hash函数生成.生成的数字摘要可以对传输中的消息的完整性进行验证.数字摘要的特征如下: 1.无论传入的消息有多长都会返回固定长度的信息. 2.传入的消息不同,返回的数字摘要也不相同.但是相同的输入必定会产生相同的输出. 3.由于消息摘要并不包含原文的完整信息,一次无法从摘要中恢复出原来的信息. MD5 MD5生成的摘要长度为128位,MD5的使用实例如下: public static byte[] tes

DotNet中几种常用的加密算法

在.NET项目中,我们较多的使用到加密这个操作.因为在现代的项目中,对信息安全的要求越来越高,那么多信息的加密就变得至关重要.现在提供几种常用的加密/解密算法. 1.用于文本和Base64编码文本的互相转换 和 Byte[]和Base64编码文本的互相转换: (1).将普通文本转换成Base64编码的文本        /// <summary>         /// 将普通文本转换成Base64编码的文本        /// </summary>         /// &l

常用的加密算法--非对称加密

非对称加密拥有两个密钥:公开密钥(publickey)和私有密钥(privatekey).通常使用公钥加密,只有使用对应的私钥才能够解密. 非对称加密主要算法有:RSA.Elgamal.背包算法.Rabin.D-H.ECC(椭圆曲线加密算法)等 非对称加密执行的步骤顺序: 1.先获取KeyPair对象: 2.获取字符串的公钥/私钥: 3.将字符串的公钥/私钥转换成为公钥/私钥类对象: 4.使用类对象的公钥进行数据加密: 5.使用类对象的私钥进行解密. RSA算法 目前最常用的非对称加密算法就是R

常用的加密算法

常见的加密算法可以分成三类,对称加密算法,非对称加密算法和Hash算法.对称加密指加密和解密使用相同密钥的加密算法.对称加密算法的优点在于加解密的高速度和使用长密钥时的难破解性.假设两个用户需要使用对称加密方法加密然后交换数据,则用户最少需要2个密钥并交换使用,如果企业内用户有n个,则整个企业共需要n×(n-1) 个密钥,密钥的生成和分发将成为企业信息部门的恶梦.对称加密算法的安全性取决于加密密钥的保存情况,但要求企业中每一个持有密钥的人都保守秘密是不可能的,他们通常会有意无意的把密钥泄漏出去-

常用的加密算法--对称加密

对称加密是最快速.最简单的一种加密方式,加密与解密用的是相同的密钥.对称加密有很多种算法,由于它效率很高,所以被广泛使用在很多加密协议的核心当中. 对称加密通常使用的是相对较小的密钥,一般小于256 bit.因为密钥越大,加密越强,但加密与解密的过程越慢. 常见的对称加密算法:DES算法.3DES算法 .AES算法 特点:算法公开,计算量小,加密速度快,加密效率高.其安全性主要依赖于秘钥的安全性.加密的时候使用的密钥只有一个. DES算法 对称加密算法,明文按照64位进行分组,密钥长64位,但是