加密技术的类型(加盐加密)_LC超人在良家的博客-程序员秘密_数据加盐加密

技术标签: 加密技术  安全  哈希算法  https  

加密技术是对信息进行编码和解码的技术,编码是把原来可读信息(又称明文)译成代码形式(又称密文),其逆过程就是解码(解密),加密技术的要点是加密算法,加密算法可以分为三类:

  • 对称加密,如AES
    • 基本原理:将明文分成N个组,然后使用密钥对各个组进行加密,形成各自的密文,最后把所有的分组密文进行合并,形成最终的密文。
    • 优势:算法公开、计算量小、加密速度快、加密效率高
    • 缺陷:双方都使用同样密钥,安全性得不到保证
  • 非对称加密,如RSA
    • 基本原理:同时生成两把密钥:私钥和公钥,私钥隐秘保存,公钥可以下发给信任客户端
      • 私钥加密,持有私钥或公钥才可以解密
      • 公钥加密,持有私钥才可解密
    • 优点:安全,难以破解
    • 缺点:算法比较耗时
  • 不可逆加密,如MD5,SHA
    • 基本原理:加密过程中不需要使用密钥,输入明文后由系统直接经过加密算法处理成密文,这种加密后的数据是无法被解密的,无法根据密文推算出明文。

RSA算法历史:

1977年,三位数学家Rivest、Shamir 和 Adleman 设计了一种算法,可以实现非对称加密。这种算法用他们三个人的名字缩写:RSA


加密从大的范畴来说分两类

  • 密钥加密:提前生成密钥,安全级别高,比较复杂,一般用于文件类的加密。比如git。

  • 加盐加密:直接指定加盐规则即可,灵活方便,适用于密码加密。从加盐的方式上又分两类,动态加盐加密和固定加盐加密,动态加盐加密更安全

加盐加密:

分为固定加密和动态加密。

  • 固定加盐加密:加盐规则固定,反复加密结果是一样的,比如md5就可以实现固定加盐加密。

import java.security.MessageDigest;
 
public class MD5Util {
    /**
     * 把字节数组转成16进位制数
     *
     * @param bytes
     * @return
     */
    public static String bytesToHex(byte[] bytes) {
        StringBuffer md5str = new StringBuffer();
        //把数组每一字节换成16进制连成md5字符串
        int digital;
        for (int i = 0; i < bytes.length; i++) {
            digital = bytes[i];
            if (digital < 0) {
                digital += 256;
            }
            if (digital < 16) {
                md5str.append("0");
            }
            md5str.append(Integer.toHexString(digital));
        }
        return md5str.toString();
    }
  
    /**
     * 把字节数组转换成md5
     *
     * @param input
     * @return
     */
    public static String bytesToMD5(byte[] input) {
        String md5str = null;
        try {
            //创建一个提供信息摘要算法的对象,初始化为md5算法对象
            MessageDigest md = MessageDigest.getInstance("MD5");
            //计算后获得字节数组
            byte[] buff = md.digest(input);
            //把数组每一字节换成16进制连成md5字符串
            md5str = bytesToHex(buff);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return md5str;
    }
  
    /**
     * 将字符串进行md5加密
     *
     * @param str 需要进行加密的字符串
     * @return  加密后的字符串
     */
    public static String strToMD5(String str) {
        byte[] input = str.getBytes();
        return bytesToMD5(input);
    }
      
    public static void main(String[] args) {
     System.out.println(strToMD5("feng"));
    }
}
  • 动态加盐加密:加盐规则是动态的,每次加密结构都不一样。比如spring的加密方式。多次加密的效果如下:
package com.leyou.item.test;

import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;

public class PwdTest {

    //第一次加密:$2a$10$RgABw7j95OXVWItuDr9.kuttSkvKm55EU7rWg7PdovcEPUIoYJlWW
    //第二次加密:$2a$10$m2Lw9rp6ecquFbdzGu0Oku3ldCOLSYX2cI/E60eH3S0MAeq.b62tK
    //第三次加密:$2a$10$qWi6DtTZdfQltrE0jbn9EeyvRTn6pbV0OHvOANgtzua0zt6NKh2wm
    public static void main(String[] args) {
        BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();
        String pwdEncoder = encoder.encode("123");
        System.out.println(pwdEncoder);
    }

}
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/LC_Liangchao/article/details/121906963

智能推荐

从程序员角度来看数据库优化_yychao的博客-程序员秘密

谈到数据库优化概念,总感觉很庞大,无从下手;最近,听了一次DBA的分享,感觉有些思路;整理成文字,强化记忆;仅仅是一些个人理解和信息聚合,可能有所偏差,还望有所指正:[b]为什么需要数据库优化?[/b]数据库性能优化主要的目的无非就是降低数据库响应时间,提升数据库响应能力TPS;[b]数据库响应时间[/b]数据库响应时间=连接时间+SQL解析时间+SQL执行时间+结果集...

linux升级openssh提示密码错误,Linux升级openssh及问题总结_weixin_39875832的博客-程序员秘密

系统版本:[[email protected] ~]# uname -aLinux db 2.6.32-431.el6.x86_64 #1 SMP Sun Nov 10 22:19:54 EST 2013x86_64 x86_64 x86_64 GNU/Linux[[email protected] ~]# cat /etc/redhat-releaseRed Hat Enterprise Linux Server release 6...

再次换博客,地址http://iwood.co.nr_不会种地的老农的博客-程序员秘密

再次换博客, Geek woodworker . 请猛点进入。博入其名,内容有计算机技术相关的,比如 http://ifq.github.com/blog/2012/09/10/baidu-blog-to-octo/ ,介绍如何通过脚本将百度博客的数据导入到octopress的博客系统中。也有木工相关的,木工作为一种业余爱好在国内并不被人熟知,可以说手工木工在中国基本绝迹,没有生态环境。我

Windows 10 安装Tensorflow gpu-1.3.0_Icoding_F2014的博客-程序员秘密

硬件配置:cpu: 锐龙1700x 显卡:GTX 1060OSWindows 10 64 企业版配置过程安装cuda8.0官网链接:https://developer.nvidia.com/cuda-80-ga2-download-archive 如果官方下载失败,则使用网盘资源: 链接:https://pan.baidu.com/s/1o9uby2m

python编程在哪里写程序-教你如何编写、保存与运行Python程序的方法_weixin_37988176的博客-程序员秘密

第一步接下来我们将看见如何在 Python 中运行一个传统的“Hello World”程序。Python教程本章将会教你如何编写、保存与运行 Python 程序。通过 Python 来运行的你的程序有两种方法——使用交互式解释器提示符或直接运行一个源代码文件。我们将了解如何使用他们二者的功能。使用解释器提示符在你的操作系统中打开终端(Terminal)程序(正如我们先前在安装章节所讨论过的那样)然...

学习PXE高效批量网络装机_码薯的博客-程序员秘密

PXE概述PXE 的全称是 preboot execute environment它其实是Intel在很久以前提出来的一项用于通过网络来引导系统的标准。允许客户机通过网络从远程服务器上下载引导镜像,并加载安装文件或者整个操作系统。实现的硬件条件1.BIOS支持2.网卡支持(现在基本都已支持)3.需要在bios中开启开关,服务器一般没打开(bmc界面里打开)4.网络中有一台 DHCP 服务器以便为客户机自动分配地址、指定引导文件位置5.服务器通过 tftp服务(简单文件...

随便推点

php 显示不同网站内容,竞价推广利器 实现不同IP访问网站显示不同内容_罗三好的博客-程序员秘密

//php获取ip的算法$user_IP = ($_SERVER["HTTP_VIA"]) ? $_SERVER["HTTP_X_FORWARDED_FOR"] : $_SERVER["REMOTE_ADDR"];$user_IP = ($user_IP) ? $user_IP : $_SERVER["REMOTE_ADDR"];//echo $user_IP;?&gt;//===========...

为什么分布式一定要有消息队列?_LiangGzone的博客-程序员秘密

虽然已经年底了,但腾讯、字节等大厂还在招人,其他公司也开始为来年的项目储备候选人。我有个朋友,最近面试屡屡碰壁,一问原因,都是算法、高并发、消息队列这些问题。拿消息队列来说,大多数人工作...

linux系统改装win10教程,技术编辑为你解答win10系统安装Linux Mint的图文方案_苏慕凉的博客-程序员秘密

win10系统稳定性好,使用者众多;免不了会遇到win10系统安装Linux Mint这样的问题要处理,大部分伙计都是第一次看到win10系统安装Linux Mint这样的事情,有的朋友想试着解决一下win10系统安装Linux Mint的问题却不知怎样下手,其实解决方法很简单,只需采取以下两步措施:1、你需要安装新的操作系统之前做明显的事情。第一个也是最重要的一点是要备份你坐在你的计算机上的任何...

[Err] 2013 - Lost connection to MySQL server during query 的解决_咕噜呜的博客-程序员秘密

[Err] 2013 - Lost connection to MySQL server during query 的解决mysql导入表结构和数据报错在配置中找到my.ini文件,我的是mysql5.7加入max_allowed_packet = 500Mmysql配置详解: max_allowed_packethttps://www.jianshu.com/p/45967d3408d4原链接地址:https://blog.csdn.net/weixin_42259631/arti

Android 菜单(Menu)控件的使用_stoneson的博客-程序员秘密_android menu 控件

<br /><br />1.通过XML布局添加菜单<br />首先在项目目录res下建立文件夹menu,然后在新建的menu文件夹下添加<br />menu.xml<?xml version="1.0" encoding="utf-8"?><menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/about" android:title="About" />

rxjs为什么用的人少_为什么刘邦的“狐朋狗友”,都是治国大才?_weixin_39780784的博客-程序员秘密

来源:朝文社(ID:ailishi777)作为明太祖朱元璋之前,中国历代皇帝里最神奇的“创业奇迹”。汉高祖刘邦常被人津津乐道(吐槽)的,就是其无比“草根”的“创业团队”。刘邦的“创业团队”有多“草根”?以东汉学者王符的话说:“ 高祖所以共取天下者,缯肆、狗屠也;骊山之徒,钜野之盗,皆为名将”。特别是那几位最早跟刘邦“创业”的团队成员,樊哙“以屠狗为事”,夏侯婴“为沛厩司御”,灌婴“贩缯者...

推荐文章

热门文章

相关标签