数字签名更多是用来校验信息有没有被修改过,而加密可以彻底杜绝防止别人看到信息内容
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 ""; }
相关推荐
在信息安全领域,数字签名和加密是两种至关重要的技术,它们分别用于确保数据的完整性和机密性。这两种技术虽然在目的上有所重叠,但在实际应用中却有着明显的区别。 首先,我们来看数字签名的基本原理。数字签名的...
在IT领域,数字签名和加密技术是网络安全与数据保护的核心组成部分。它们对于确保信息的完整性和验证发送者身份至关重要。让我们深入探讨这两个概念及其在实际应用中的重要性。 首先,我们来理解“数字签名”。数字...
数字签名和加密邮件发送实验报告 本实验报告旨在介绍如何使用 Outlook Express 发送带数字签名和加密的电子邮件。实验中,我们将学习如何申请免费数字证书、设置 Outlook Express 收发邮件、发送带数字签名的邮件和...
数据加密与数字签名系统是信息安全领域中的核心技术,用于保护数据的隐私性和完整性,以及验证信息来源的可靠性。在本文中,我们将深入探讨这两个概念及其在C++编程中的应用。 首先,我们来理解数据加密。数据加密...
非对称加密算法和数字签名是信息技术中两个关键的安全概念,尤其在网络安全和数据保护方面起着至关重要的作用。在Java编程环境中,这些技术被广泛应用于实现安全通信、身份验证和数据完整性保护。 非对称加密算法,...
### 公钥私钥加密解密、数字证书与数字签名详解 #### 一、基础知识概述 在探讨公钥私钥加密解密、数字证书以及数字签名之前,我们需要先理解几个核心概念。 **1. 密钥对:** - 在非对称加密技术中,存在两种密钥...
在 Outlook Express 中,需要设置数字签名,包括选中邮箱,右键单击“属性”命令,在弹出的窗口中切换到“安全”选项夹,点击右侧“选择”按钮,挑选与该邮箱相匹配的证书。只有在邮箱匹配数字标识(证书)时,才能...
在这个主题中,我们将深入探讨"openssl数字签名和加密",主要关注如何在Linux环境中,利用C语言和OpenSSL库来实现RSA算法的公钥签名与私钥验签,以及公钥加密和私钥解密的过程。 首先,让我们了解一下数字签名。...
java关于加密的算法demo代码(Base64加密\数字签名\对称加密算法\非对称加密算法\消息摘要算法) JAVA安全实现三种方式: 1.JDK 2.Commons Codec 3.Bouncy Castle 一。非对称加密算法: 1.DH 2.RSA 3.ELGamal 二。...
Java作为一种广泛使用的编程语言,提供了丰富的加密和数字签名功能来确保数据的安全传输和存储。本教程将带你快速入门Java中的加密和数字签名编程。 首先,让我们了解什么是加密。加密是一种将明文数据转化为难以...
在IT领域,加密、RSA数字签名以及数字证书是网络安全中至关重要的概念,它们共同构建了互联网上安全通信的基础。下面将详细阐述这些知识点,并结合"EncryptMethod"这一压缩包文件中的可能内容进行分析。 首先,加密...
《发送数字签名和加密邮件——理解与实践》 在当今的信息化社会,电子邮件已经成为日常沟通的重要工具。然而,随着网络安全问题日益突出,如何确保邮件的安全性成为了一个亟待解决的问题。数字签名和加密邮件的使用...
标题中的“数字签名和加密模拟软件”涉及到两个关键概念:数字签名和加密。这两个概念是信息安全领域中的核心组成部分,主要用于确保数据的完整性和保密性。 首先,我们来深入理解一下数字签名。数字签名是一种用于...
java通信安全主要包括:md5 密码加密与验证 对称加密与解密 非对称加密以解密 基于MD5信息摘要算法实现密码加密与验证 凯撒加密算法 数字签名与验证 消息验证码 消息摘要 所有程序都经过了测试
数字签名是一种非对称加密的应用,用于验证数据的完整性和发送者的身份。发送者通过自己的私钥对消息的哈希值进行加密,接收者可以使用发送者的公钥来解密这个签名,如果解密后的哈希值与原始消息的哈希值一致,就...
"深入理解加密、解密、数字签名和数字证书" 加密、解密、数字签名和数字证书是信息安全领域的重要概念,在电子商务和网络银行等领域中尤其重要。在本文中,我们将深入探讨这些概念的定义、原理和应用。 加密和解密...
不对称加密和数字签名是两种广泛使用的安全技术,它们为数据提供了强大的保护。本实例应用聚焦于如何在C#编程环境中实现这些技术。 不对称加密,也称为公钥加密,是一种基于两个密钥(公钥和私钥)的加密方法。公钥...