文档章节

浅谈信息加密技术和算法

蛙牛
 蛙牛
发布于 2014/06/23 22:22
字数 931
阅读 353
收藏 10

1单向散列加密

    单向散列加密是指通过对不同输入长度的信息进行散列计算,得到固定长度的输出,这个散列计算过程是单向的,不可逆的。常用的单向散列算法有MD5,SHA等。

    比如网站中,用户密码,一般可以进行MD5加密后保存,用户登录时,对用户输出的密码进行加密后和数据库密文进行比较,如果一致,则验证成功。

   为了加强计算的安全性,可以对数据加上密钥,增加破解的难度。

推荐使用 apache common的 commons-codec的 jar包 比如(commons-codec-1.8.jar)

    /**
     * 字符串进行MD5加密
     * @param str
     * @return
     */
    public static String encryptMD5(String str) {
        return DigestUtils.md5Hex(str);
    }

    /**
     *  将字符串 SHA 加密
     * @param str
     * @return
     */
    public static String encryptSHA(String str) {
        return DigestUtils.sha1Hex(str);
    }


2对称加密

    对称加密是指加密和解密使用相同的密钥。明文可以根据密钥进行加密,密文可以根据密钥进行解密为明文。

    对称加密算法常用于Cookie加密,通信加密等场合。常用的算法有DES,RC,AES算法等。

    对称算法优点是算法简单,加密解密效率高,系统开销小,适合对大量数据加密。是一种传统加密手段,也是最常用的加密手段,适用于绝大多数需要加密的场合。

    

java-DES加密/解密 -demo: http://www.oschina.net/code/snippet_727646_18383

3非对称加密

    非对称加密,是指加密和解密使用不同的密钥,其中一个对外公布,称为公钥,另外一个不对外公布,称为私钥。用公钥加密的信息必须用私钥解开,用私钥加密的信息只有公钥才能解开。

    非对称加密技术常用于信息安全传输,数字签名等场合。常用算法有RSA算法等。

    比如信息发送者获得信息接受者的公钥,对提交信息进行加密,通过非安全传输通道将密文发送给接受者,接受者得到密钥后,用自己的私钥进行解密,获得明文信息。在传输过程中遭到信息窃取时,窃取者没有密钥无法获得明文。

    数字签名过程相反,签名者用自己的私钥对信息进行加密,发送接收方,接收方使用签名者的公钥对信息进行解密,由于私钥只有签名者拥有,那么发送的信息具有签名性质,不可抵赖。

java-RSA加密/解密-demo :http://blog.csdn.net/centralperk/article/details/8558678

http://blog.csdn.net/liuhuabai100/article/details/7585879

4总结

    在实际应用中,可根据实际需要可以混合进行使用。同时加密技术中,密钥是十分关键的存在。一旦密钥泄露出去,加密信息就会失去秘密性。在一些安全性高的项目中,密钥和算法可以独立部署,向外提供加密和解密服务,由专人维护,系统性能开销较大。或者加密算法放在应用中,密钥单独部署,定时更新,密钥可进行切片存储多台服务器,每台服务器有专人管理,大家各司其职,没人可以查看完成密钥信息。


参加文献:《大型网站技术架构》——李智慧(这本书真是个好书,可以大大开拓程序员的眼界)


© 著作权归作者所有

共有 人打赏支持
蛙牛

蛙牛

粉丝 525
博文 46
码字总数 48937
作品 1
朝阳
程序员
加载中

评论(1)

狮子的魂
狮子的魂
学习了。。
浅谈 PHP 中的多种加密技术及代码示例

同样是一道面试答错的问,面试官问我非对称加密算法中有哪些经典的算法? 当时我愣了一下,因为我把非对称加密与单项散列加密的概念弄混淆了,所以更不用说什么非对称加密算法中有什么经典算...

snowing1990
2016/04/13
28
0
浅谈web架构之架构设计

前言 题目有点大,所以不可能说得非常具体,笔者也不能驾驭全部。 前面介绍过网站发展过程中架构的演化过程,本文主要针对网站架构各个方面的建设进行简单介绍。 架构模式 先来说说模式:每一...

看看这天
2016/10/20
22
0
Android安全开发之浅谈密钥硬编码

Android安全开发之浅谈密钥硬编码 作者:伊樵、呆狐@阿里聚安全 1 简介在阿里聚安全的漏洞扫描器中和人工APP安全审计中,经常发现有开发者将密钥硬编码在Java代码、文件中,这样做会引起很大...

阿里聚安全
2016/05/16
629
1
Android应用安全开发之浅谈加密算法的坑

作者:阿里移动安全@伊樵,@舟海 Android开发中,难免会遇到需要加解密一些数据内容存到本地文件、或者通过网络传输到其他服务器和设备的问题,但并不是使用了加密就绝对安全了,如果加密函数...

阿里聚安全
2016/03/23
783
0
《Nodejs开发加密货币》之九:在Nodejs中使用加密解密技术

关于 《Nodejs开发加密货币》,是一个加密货币产品的详细开发文档,涉及到使用Nodejs开发产品的方方面面,从前端到后台、从服务器到客户端、从PC到移动、加密解密、区款链等各个环节。代码完...

imfly
2016/05/06
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

python3.6 取整除法

python3.6 中取整除法运算逻辑如下: d 非零,那么商 q 满足这样的关系: a = qd + r ,且0 ≤ r n1=7//3#7 = 3*2 +1n2=-6.1//3#-7 = 3*(-3)+2'{},{}'.format(n1,n2) 从运行结果可以...

colinux
18分钟前
0
0
阶段总结——用虚拟机搭建一个高可用负载均衡集群架构

[toc] linux基本知识已经介绍完,现有一个业务需要操作,通过对这个项目的操作,可以复习、总结、巩固之前的知识点; ** 用13台虚拟机搭建一个高可用负载均衡集群架构出来,并运行三个站点,...

feng-01
21分钟前
0
0
mysql 设置utf8字符集 (CentOS)

1.查看数据库及mysql应用目前使用的编码方式 (1)链接mysql 客户端 (2)执行:status 结果: 2.修改mysql 应用的字符编码(server characterset ) (1)打开配置文件:vim /etc/mysql/my...

qimh
21分钟前
0
0
windows无法格式化u盘解决方法

1。点开始-运行-输入cmd-format f: /fs: fat32 (这里f:是指U盘所在盘符) 这个格式化会很慢 请耐心等待

大灰狼wow
33分钟前
0
0
MySql 8.0连接失败

原来,MySql 8.0.11 换了新的身份验证插件(caching_sha2_password), 原来的身份验证插件为(mysql_native_password)。而客户端工具Navicat Premium12 中找不到新的身份验证插件(caching_s...

放飞E梦想O
49分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部