`
cfyme
  • 浏览: 275051 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

数字签名与加密的区别

 
阅读更多

数字签名更多是用来校验信息有没有被修改过,而加密可以彻底杜绝防止别人看到信息内容

 

SHA-1 和 MD5算法 

 

严格说来它们不算是加密算法,只能说是摘要算法。

SHA-1算法:Security Hash Algorithm 安全哈希算法, 它可以把长度不超过2的64次方位的信息转换成160位(20字节)长的散列值

 

MD5算法:Message Digest 信息摘要算法, 散列长度是128位,16个字节。它对输入以512位分组,输出是4个32位字的级联。

 

CRC算法:循环冗余校验,碰撞几率比较高

 

加密技术可以分为对称非对称两种.

对称加密,解密,即加密与解密用的是同一把秘钥,常用的对称加密技术有DES,AES等

 

而非对称技术,加密与解密用的是不同的秘钥,常用的非对称加密技术有RSA等

 

  例如DES对称加密代码:  

/**
 * 给用户id和设备id进行加密,添加时间属性 * 
 * @param userId
 * @return
 */
public static String encode(Long userId, Long deviceId) {
	try {
		Random random = new Random();
		StringBuilder sb = new StringBuilder();
		for (int i = 0; i < 16; i++) {
			sb.append(values[random.nextInt(values.length - 1)]);
		}
		String randomCode = sb.toString();
		SecretKey deskey = new SecretKeySpec((randomCode + KEYPREFIX).getBytes("utf-8"), "DESede"); // 加密
		Cipher c1 = Cipher.getInstance("DESede");
		c1.init(Cipher.ENCRYPT_MODE, deskey);
		String str = "";
		String time=new SimpleDateFormat("yyyyMM").format(new Date());
		if (deviceId != null && deviceId > 0) {
			str = Tf8Base64.base32Encode(c1.doFinal(String.valueOf(userId + SEP + deviceId+SEP+Long.valueOf(time)).getBytes("utf-8")));
		} else {
			str = Tf8Base64.base32Encode(c1.doFinal(String.valueOf(userId).getBytes("utf-8")));
		}

		return URLEncoder.encode(UNDERLINE + str + randomCode, "utf-8");
	} catch (Exception e) {
		log.error("error happens when encode userId for " + userId + ",error info is " + e.getMessage(), e);
	}
	return "";
}

 

   DES 解密

  

	/** 
	 * @param code
	 * @return
	 */
	public static String decode(String code) {
		try {			
			code = URLDecoder.decode(code, "utf-8");
			String userId = code.substring(0, code.length() - 16);
			String randomCode = code.substring(code.length() - 16);
			SecretKey deskey = new SecretKeySpec((randomCode + KEYPREFIX).getBytes("utf-8"), "DESede"); // 解密
			Cipher c1 = Cipher.getInstance("DESede");
			c1.init(Cipher.DECRYPT_MODE, deskey);

			return new String(c1.doFinal(Tf8Base64.base32Decode(userId)));
		} catch (Exception e) {
			log.error("error happens when decode code for " + code + ",error info is " + e.getMessage(), e);
		}
		return "";
	}

 

分享到:
评论

相关推荐

    数字签名和加密的基本原理及其区别

    在信息安全领域,数字签名和加密是两种至关重要的技术,它们分别用于确保数据的完整性和机密性。这两种技术虽然在目的上有所重叠,但在实际应用中却有着明显的区别。 首先,我们来看数字签名的基本原理。数字签名的...

    数字签名 数字 签名 wod加密 加密

    在IT领域,数字签名和加密技术是网络安全与数据保护的核心组成部分。它们对于确保信息的完整性和验证发送者身份至关重要。让我们深入探讨这两个概念及其在实际应用中的重要性。 首先,我们来理解“数字签名”。数字...

    发送数字签名和加密邮件-实验报告.pdf

    数字签名和加密邮件发送实验报告 本实验报告旨在介绍如何使用 Outlook Express 发送带数字签名和加密的电子邮件。实验中,我们将学习如何申请免费数字证书、设置 Outlook Express 收发邮件、发送带数字签名的邮件和...

    数据加密与数字签名系统

    数据加密与数字签名系统是信息安全领域中的核心技术,用于保护数据的隐私性和完整性,以及验证信息来源的可靠性。在本文中,我们将深入探讨这两个概念及其在C++编程中的应用。 首先,我们来理解数据加密。数据加密...

    openssl数字签名和加密

    在这个主题中,我们将深入探讨"openssl数字签名和加密",主要关注如何在Linux环境中,利用C语言和OpenSSL库来实现RSA算法的公钥签名与私钥验签,以及公钥加密和私钥解密的过程。 首先,让我们了解一下数字签名。...

    非对称加密算法 数字签名算法

    非对称加密算法和数字签名是信息技术中两个关键的安全概念,尤其在网络安全和数据保护方面起着至关重要的作用。在Java编程环境中,这些技术被广泛应用于实现安全通信、身份验证和数据完整性保护。 非对称加密算法,...

    公钥私钥加密解密数字证书数字签名详解.docx

    ### 公钥私钥加密解密、数字证书与数字签名详解 #### 一、基础知识概述 在探讨公钥私钥加密解密、数字证书以及数字签名之前,我们需要先理解几个核心概念。 **1. 密钥对:** - 在非对称加密技术中,存在两种密钥...

    发送数字签名和加密邮件.pdf

    在 Outlook Express 中,需要设置数字签名,包括选中邮箱,右键单击“属性”命令,在弹出的窗口中切换到“安全”选项夹,点击右侧“选择”按钮,挑选与该邮箱相匹配的证书。只有在邮箱匹配数字标识(证书)时,才能...

    java加密算法:Base64加密\数字签名\对称加密算法\非对称加密算法\消息摘要算法

    java关于加密的算法demo代码(Base64加密\数字签名\对称加密算法\非对称加密算法\消息摘要算法) JAVA安全实现三种方式: 1.JDK 2.Commons Codec 3.Bouncy Castle 一。非对称加密算法: 1.DH 2.RSA 3.ELGamal 二。...

    Java加密和数字签名编程快速入门.rar_Java加密_java 数字 签名_java 数字签名_数字 签名_数字签名

    Java作为一种广泛使用的编程语言,提供了丰富的加密和数字签名功能来确保数据的安全传输和存储。本教程将带你快速入门Java中的加密和数字签名编程。 首先,让我们了解什么是加密。加密是一种将明文数据转化为难以...

    加密 RSA 数字签名 数字证书 实例

    在IT领域,加密、RSA数字签名以及数字证书是网络安全中至关重要的概念,它们共同构建了互联网上安全通信的基础。下面将详细阐述这些知识点,并结合"EncryptMethod"这一压缩包文件中的可能内容进行分析。 首先,加密...

    发送数字签名和加密邮件[整理].pdf

    《发送数字签名和加密邮件——理解与实践》 在当今的信息化社会,电子邮件已经成为日常沟通的重要工具。然而,随着网络安全问题日益突出,如何确保邮件的安全性成为了一个亟待解决的问题。数字签名和加密邮件的使用...

    数字签名和加密模拟软件

    标题中的“数字签名和加密模拟软件”涉及到两个关键概念:数字签名和加密。这两个概念是信息安全领域中的核心组成部分,主要用于确保数据的完整性和保密性。 首先,我们来深入理解一下数字签名。数字签名是一种用于...

    java通信安全 加密 数字签名 消息摘要

    java通信安全主要包括:md5 密码加密与验证 对称加密与解密 非对称加密以解密 基于MD5信息摘要算法实现密码加密与验证 凯撒加密算法 数字签名与验证 消息验证码 消息摘要 所有程序都经过了测试

    公钥加密,数字签名,公钥认证,认证授权,基于 PKI 授权.zip

    数字签名是一种非对称加密的应用,用于验证数据的完整性和发送者的身份。发送者通过自己的私钥对消息的哈希值进行加密,接收者可以使用发送者的公钥来解密这个签名,如果解密后的哈希值与原始消息的哈希值一致,就...

    不对称加密及数字签名的实例应用

    不对称加密和数字签名是两种广泛使用的安全技术,它们为数据提供了强大的保护。本实例应用聚焦于如何在C#编程环境中实现这些技术。 不对称加密,也称为公钥加密,是一种基于两个密钥(公钥和私钥)的加密方法。公钥...

    Java加密和数字签名编程快速入门

    4. 签名与证书:数字签名通常与X.509证书结合使用,证书包含公钥和颁发者的身份信息,确保公钥的来源可信。 三、示例代码 在学习过程中,通过编写实际的Java代码来练习加密和数字签名的使用,例如: - 创建一个简单...

Global site tag (gtag.js) - Google Analytics