精华内容
下载资源
问答
  • 博文链接:https://llying.iteye.com/blog/171256
  • java密码加密方法

    2009-05-19 14:31:01
    java密码加密,解密方法,一个好例子帮助大家学习!
  • java密码加密解密

    2018-10-26 11:10:03
    java代码编写的密码加密类,可以解密。根据自己需求改变秘钥,更安全。windows和Linux环境密文不一致问题解决方案见我的博客https://blog.csdn.net/yang1393214887/article/details/83411051#comments
  • 主要为大家详细介绍了java实现置换密码加密解密,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • Java如何实现密码加密

    2021-03-25 10:29:07
    在查询时,我们如果要对用户的登录信息进行加密,通常会将其密码进行加密.1) 可以借助spring框架工具类DigestUtils2) 也可以使用shiro框架来实现以上就是两者方式分别使用,注意:盐值salt:UUID.randomUUID().toString()...

    在查询时,我们如果要对用户的登录信息进行加密,通常会将其密码进行加密.

    1) 可以借助spring框架工具类DigestUtils

    2) 也可以使用shiro框架来实现

    以上就是两者方式分别使用,

    注意:

    盐值salt:UUID.randomUUID().toString();生成的是一个随机字符串.

    SimpleHash sh=new SimpleHash("MD5", entity.getPassword(), salt, 1);

    这行shiro框架提供的加密中,

    第一个参数"MD5"为加密算法,其特点:不可逆(只能加密不能解密),但是相同内容加密结果也相同;

    第二个参数source,代表原密码;

    第三个参数salt,就是我们先生成的盐值随机数;

    第四个参数1,代表加密次数,我们这里只加密了一次.

    加密处理过后,我们再将新修改的密码转换为16进制数赋值给对象,salt的传递看你对象属性的设置.

    然后再根据新的对象内的数据进行操作即可.

    以上就是Java如何实现密码加密的详细内容,更多关于Java密码加密的资料请关注服务器之家其它相关文章!

    原文链接:https://www.tuicool.com/articles/J7jaM3Z

    展开全文
  • 主要为大家详细介绍了java实现仿射密码加密解密的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 主要介绍了java明文密码加密,对一个明文密码进行了三重加密:第一层栅栏一次,第二层在栅栏一次,第三层在一次摩斯加密,感兴趣的小伙伴们可以参考一下
  • 主要为大家详细介绍了Java实现简单密码加密功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • java加密和解密的方法

    2019-03-25 14:54:46
    java加密和解密的方法,利用指定的密钥,可逆的。密钥必须16位。
  • 一、常用的加密/解密算法 1.Base64  严格来说Base64并不是一种加密/解密算法,而是一种编码方式。Base64不生成密钥,通过Base64编码后的密文就可以直接“翻译”为明文,但是可以通过向明文中添加混淆字符来达到...
  • Java安全密码学-(三)常见加密方式

    千次阅读 2020-06-29 15:22:01
    采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密。 示例 我们现在有一个原文3要发送给B 设置密钥为108, 3 * 108 = 324, 将324作为密文发送给B...

    对称加密

    采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密。

    示例

    我们现在有一个原文3要发送给B

    设置密钥为108, 3 * 108 = 324, 将324作为密文发送给B

    B拿到密文324后, 使用324/108 = 3 得到原文

     

    常见加密算法

    DES : Data Encryption Standard,即数据加密标准,是一种使用密钥加密的块算法,1977年被美国联邦政府的国家标准局确定为联邦资料处理标准(FIPS),并授权在非密级政府通信中使用,随后该算法在国际上广泛流传开来。

    AES : Advanced Encryption Standard, 高级加密标准 .在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。

    特点

    • 加密速度快, 可以加密大文件
    • 密文可逆, 一旦密钥文件泄漏, 就会导致数据暴露
    • 加密后编码表找不到对应字符, 出现乱码
    • 一般结合Base64使用

     

    DES加密

    示例代码 des加密算法

    Cipher :文档 https://docs.oracle.com/javase/8/docs/api/javax/crypto/Cipher.html#getInstance-java.lang.String-

    package com.atguigu.desaes;
    
    import javax.crypto.Cipher;
    import javax.crypto.spec.SecretKeySpec;
    
    /**
     * DesAesDemo
     *
     * @Author: 尚硅谷
     * @CreateTime: 2020-03-17
     * @Description:
     */
    public class DesAesDemo {
        public static void main(String[] args) throws Exception{
            // 原文
            String input = "硅谷";
            // des加密必须是8位
            String key = "12345678";
            // 算法
            String algorithm = "DES";
    
            String transformation = "DES";
            // Cipher:密码,获取加密对象
            // transformation:参数表示使用什么类型加密
            Cipher cipher = Cipher.getInstance(transformation);
            // 指定秘钥规则
            // 第一个参数表示:密钥,key的字节数组
            // 第二个参数表示:算法
            SecretKeySpec sks = new SecretKeySpec(key.getBytes(), algorithm);
            // 对加密进行初始化
            // 第一个参数:表示模式,有加密模式和解密模式
            // 第二个参数:表示秘钥规则
            cipher.init(Cipher.ENCRYPT_MODE,sks);
            // 进行加密
            byte[] bytes = cipher.doFinal(input.getBytes());
            // 打印字节,因为ascii码有负数,解析不出来,所以乱码
    //        for (byte b : bytes) {
    //            System.out.println(b);
    //        }
            // 打印密文
            System.out.println(new String(bytes));
        }
    }

    出现乱码是因为对应的字节出现负数,但负数,没有出现在 ascii 码表里面,所以出现乱码,需要配合base64进行转码 

    使用 base64 进行编码

    base64 导包的时候,需要注意 ,别导错了,需要导入 apache 包

     

    DES解密

    package com.atguigu.desaes;
    
    import com.sun.org.apache.xml.internal.security.utils.Base64;
    
    import javax.crypto.Cipher;
    import javax.crypto.spec.IvParameterSpec;
    import javax.crypto.spec.SecretKeySpec;
    
    public class DesDemo {
        // DES加密算法,key的大小必须是8个字节
    
        public static void main(String[] args) throws Exception {
            String input ="硅谷";
            // DES加密算法,key的大小必须是8个字节
            String key = "12345678";
    
            String transformation = "DES"; // 9PQXVUIhaaQ=
            // 指定获取密钥的算法
            String algorithm = "DES";
            String encryptDES = encryptDES(input, key, transformation, algorithm);
            System.out.println("加密:" + encryptDES);
            String s = decryptDES(encryptDES, key, transformation, algorithm);
            System.out.println("解密:" + s);
    
        }
    
        /**
         * 使用DES加密数据
         *
         * @param input          : 原文
         * @param key            : 密钥(DES,密钥的长度必须是8个字节)
         * @param transformation : 获取Cipher对象的算法
         * @param algorithm      : 获取密钥的算法
         * @return : 密文
          * @throws Exception
          */
        private static String encryptDES(String input, String key, String transformation, String algorithm) throws Exception {
            // 获取加密对象
            Cipher cipher = Cipher.getInstance(transformation);
            // 创建加密规则
            // 第一个参数key的字节
            // 第二个参数表示加密算法
            SecretKeySpec sks = new SecretKeySpec(key.getBytes(), algorithm);
            // ENCRYPT_MODE:加密模式
            // DECRYPT_MODE: 解密模式
            // 初始化加密模式和算法
            cipher.init(Cipher.ENCRYPT_MODE,sks);
            // 加密
            byte[] bytes = cipher.doFinal(input.getBytes());
    
            // 输出加密后的数据
            String encode = Base64.encode(bytes);
    
             return encode;
         }
    
        /**
         * 使用DES解密
         *
         * @param input          : 密文
         * @param key            : 密钥
         * @param transformation : 获取Cipher对象的算法
         * @param algorithm      : 获取密钥的算法
         * @throws Exception
         * @return: 原文
         */
        private static String decryptDES(String input, String key, String transformation, String algorithm) throws Exception {
            // 1,获取Cipher对象
            Cipher cipher = Cipher.getInstance(transformation);
            // 指定密钥规则
            SecretKeySpec sks = new SecretKeySpec(key.getBytes(), algorithm);
            cipher.init(Cipher.DECRYPT_MODE, sks);
            // 3. 解密,上面使用的base64编码,下面直接用密文
            byte[] bytes = cipher.doFinal(Base64.decode(input));
            //  因为是明文,所以直接返回
            return new String(bytes);
        }
    }

     

    Base64 算法简介

    Base64是网络上最常见的用于传输8Bit字节码的可读性编码算法之一
    可读性编码算法不是为了保护数据的安全性,而是为了可读性
    可读性编码不改变信息内容,只改变信息内容的表现形式
    所谓Base64,即是说在编码过程中使用了64种字符:大写A到Z、小写a到z、数字0到9、“+”和“/”
    Base58是Bitcoin(比特币)中使用的一种编码方式,主要用于产生Bitcoin的钱包地址
    相比Base64,Base58不使用数字"0",字母大写"O",字母大写"I",和字母小写"i",以及"+"和"/"符号

    原理

    base64 是 3个字节为一组,一个字节 8位,一共 就是24位 ,然后,把3个字节转成4组,每组6位,

    3 * 8 = 4 * 6 = 24 ,每组6位,缺少的2位,会在高位进行补0 ,这样做的好处在于 ,base取的是后面6位,去掉高2位 ,那么base64的取值就可以控制在0-63位了,所以就叫base64,111 111 = 32 + 16 + 8 + 4 + 2 + 1 =

     

    构成

    ① 小写 a - z = 26个字母

    ② 大写 A - Z = 26个字母

    ③ 数字 0 - 9 = 10 个数字

    ④ + / = 2个符号

    大家可能发现一个问题,咱们的base64有个 = 号,但是在映射表里面没有发现 = 号 , 这个地方需要注意,等号非常特殊,因为base64是三个字节一组 ,如果当我们的位数不够的时候,会使用等号来补齐

     

    base64补等号测试

    package com.atguigu;
    
    import com.sun.org.apache.xml.internal.security.utils.Base64;
    
    
    public class TestBase64 {
        public static void main(String[] args) {
            //  1:MQ== 表示一个字节,不够三个字节,所以需要后面通过 == 号补齐
            System.out.println(Base64.encode("1".getBytes()));
    //        System.out.println(Base64.encode("12".getBytes()));
    //        System.out.println(Base64.encode("123".getBytes()));
    //        // 硅谷:中文占6个字节,6 * 8 = 48 ,刚刚好被整除,所以没有等号
    //        System.out.println(Base64.encode("硅谷".getBytes()));
        }
    }

     

    AES加密解密

    AES 加密解密和 DES 加密解密代码一样,只需要修改加密算法就行,拷贝 ESC 代码

    AES 加密的密钥key , 需要传入16个字节

     

    展开全文
  • (Java密码加密)MD5方式

    热门讨论 2011-03-29 09:52:00
    可以对登录用户的密码进行加密,起到保护密码安全。 之前上传的那个有点乱,换成了java源码打包的。
  • java密码加密解密算法代码实现

    热门讨论 2011-12-29 14:10:28
    例如,在Java Persistence系统Hibernate中,就采用了Base64来将一个较长的唯一标识符(一般为128-bit的UUID)编码为一个字符串,用作HTTP表单和HTTP GET URL中的参数。在其他应用程序中,也常常需要把二进制数据编码...
  • java密码加密

    2014-01-08 17:08:53
    加密算法有很多种:这里只大约列举几例
  • 在密码学中,恺撒密码(英语:Caesar cipher),或称恺撒加密、恺撒变换、变换加密,是一种最简单且最广为人知的加密技术。...本课程设计是用java语言实现的凯撒密码加密与解密程序。 可直接提交!高分模板!
  • 主要介绍了JAVA 字符串加密、密码加密实现方法的相关资料,需要的朋友可以参考下
  • Java加密的几种方式

    千次阅读 2019-12-23 15:56:30
    Java常用的加密方式 ...在实际使用中,将密码加密并储存到数据库中,登录时取出存储的密码,进行解密 /** * @author Myriven * @date 2019/12/23 14:23 * @description */ /*BASE564加密*/ public class BAS...

    Java常用的加密方式

    1.BASE64

    严格来说BASE64不算是加密,而是对其编码格式进行修改,使之变为不易被人识别的形式。在实际使用中,将密码加密并储存到数据库中,登录时取出存储的密码,进行解密

    /**
     * @author Myriven
     * @date 2019/12/23 14:23
     * @description
     */
    /*BASE564加密*/
    public class BASE64Demo {
    
        public static void main(String[] args) throws IOException {
            String broforePWD="password";
            System.out.println("加密前:"+broforePWD);
    
            String afterPWD = encryptBASE64(broforePWD.getBytes());
            System.out.println("加密后:"+afterPWD);
    
            byte[] bytes = decryptBASE64(afterPWD);
            System.out.println("解密后:"+new String(bytes));
        }
    
        /*加密*/
        public static String encryptBASE64(byte[] pwd){
            String  result= new BASE64Encoder().encodeBuffer(pwd);
            return result;
        }
        /*解密*/
        public static byte[] decryptBASE64(String pwd) throws IOException {
            byte[] bytes = new BASE64Decoder().decodeBuffer(pwd);
            return bytes;
        }
    }
    

    2.MD5

    MD5加密全程是Message-Digest Algoorithm 5(信息-摘要算法),它对信息进行摘要采集,再通过一定的位运算,最终获取加密后的MD5字符串。
    MD5加密属于不可逆加密,在实际使用中,将密码加密后存储到数据库中,在登录的时候将输入的密码获取到,再次通过该加密算法加密,与数据库中存储的进行比较判断密码输入的是否正确

    MD5有哪些特点
      MD5加密的特点主要有以下几点:
      1、针对不同长度待加密的数据、字符串等等,其都可以返回一个固定长度的MD5加密字符串。(通常32位的16进制字符串);
      2、其加密过程几乎不可逆,除非维护一个庞大的Key-Value数据库来进行碰撞破解,否则几乎无法解开。
      3、运算简便,且可实现方式多样,通过一定的处理方式也可以避免碰撞算法的破解。
      4、对于一个固定的字符串。数字等等,MD5加密后的字符串是固定的,也就是说不管MD5加密多少次,都是同样的结果。

    java自带的MD5加密

    /**
     * @author Myriven
     * @date 2019/12/23 14:50
     * @description
     */
    /*md5加密*/
    public class MD5Demo {
        public static void main(String[] args) throws NoSuchAlgorithmException {
            String pwd="password";
            // 生成一个MD5加密计算摘要
            MessageDigest md = MessageDigest.getInstance("MD5");
            // 计算md5函数
            md.update(pwd.getBytes());
            // digest()最后确定返回md5 hash值,返回值为8位字符串。因为md5 hash值是16位的hex值,实际上就是8位的字符
            // BigInteger函数则将8位的字符串转换成16位hex值,用字符串来表示;得到字符串形式的hash值
            //一个byte是八位二进制,也就是2位十六进制字符(2的8次方等于16的2次方)
            System.out.println("JAVA自带md5加密==========>"+ new BigInteger(1, md.digest()).toString(16));
    
        }
    }
    

    spring自带的工具DigestUtils实现

    DigestUtils.md5DigestAsHex("password".getBytes())
    

    3.BCrypt

    原文网址: https://www.cnblogs.com/xingzc/p/8624007.html

    public class BCryptDemo {
      public static void main(String[] args) {
       String newPWD= "password";
       //加密
       String newPWD= BCrypt.hashpw(newPWD, BCrypt.gensalt());
       System.out.println("加密后:"+newPWD);
       //BCrypt.gensalt(12)表示加盐,gensalt中的参数决定了他的复杂性,默认是10
       String hashed2 = BCrypt.hashpw(password, BCrypt.gensalt(12));
      
       String candidate = "testpassword";
     	//检查未加密的密码(candidate)是否与加密的密码一致,进行比较,如果相同返回true
       if (BCrypt.checkpw(candidate,newPWD)){
        System.out.println("密码相同");
       }else{
      		System.out.println("密码不同");
      	 }
      }
    }
    

    什么是加盐?

    如果两个人或多个人的密码相同,加密后保存会得到相同的结果。破一个就可以破一片的密码。如果名为A的用户可以查看数据库,那么他可以观察到自己的密码和别人的密码加密后的结果都是一样,那么,别人用的和自己就是同一个密码,这样,就可以利用别人的身份登录了。
    其实只要稍微混淆一下就能防范住了,这在加密术语中称为“加盐”。具体来说就是在原有材料(用户自定义密码)中加入其它成分(一般是用户自有且不变的因素),以此来增加系统复杂度。当这种盐和用户密码相结合后,再通过摘要处理,就能得到隐蔽性更强的摘要值。

    展开全文
  • Java密码加密

    万次阅读 2019-04-07 13:33:14
    第一种:MD5加密 第二种:SHA加密(安全性更高)

    第一种:MD5加密

    第二种:SHA加密(安全性更高)

     

    展开全文
  • 运行环境:Windows + eclipse + JAVA 维吉尼亚密码(又译维热纳尔密码)是使用一系列凯撒密码组成密码字母表的加密算法,属于多表密码的一种简单形式。
  • java实现可逆加密算法

    2020-08-26 05:04:50
    主要为大家详细介绍了java实现可逆加密算法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 后台生成rsa密钥对,然后在登陆页面设置rsa公钥,提交时用公钥加密密码,生成的密文传到后台,用私钥解密,获取密码明文。 这样客户端只需要知道rsa加密方式和公钥,前台不知道私钥是无法解密的,此解决方案还是相对...
  • JAVA实现古典置换密码加密解密
  • Java换位密码加密解密

    2014-01-17 19:43:44
    Java图形用户界面实现的“换位密码算法的加密和解密”算法
  • java写的SM4文件加密系统,可以进行可视化操作,很简单
  • 有的时候因为业务的需要,我们要制作关于密码的修改功能。而关于密码加密一般都是用MD5,那么这篇文章将介绍如何在Java的后端实现MD5加密,有需要的可以参考借鉴。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 134,739
精华内容 53,895
关键字:

java密码加密方法

java 订阅