精华内容
下载资源
问答
  • Java加密解密算法-SHA加密

    千次阅读 2016-07-21 20:08:35
    Java加密解密算法-SHA加密
    package algo;
    

    import java.security.MessageDigest;
    import java.security.NoSuchAlgorithmException;

    /**
     * SHA(Secure Hash Algorithm,安全散列算法),
     * 数字签名等密码学应用中重要的工具,被广泛地应用于电子商务等信息安全领域。
     * 虽然,SHA与MD5通过碰撞法都被破解了, 但是SHA仍然是公认的安全加密算法,较之MD5更为安全。
     * @author Administrator
     *
     */
    public class SHA {

        public static void main(String[] args) {
            String str = "南海是中国的";
            System.out.println("---原始---:"+str);
            String encryptShaRes1 = encryptSHA1(str);
            System.out.println("SHA-1加密后:"+encryptShaRes1);
        }

        private static String SHA = "SHA-1";
        //private static String SHA2 = "SHA";

        /**
         * SHA摘要加密,一般用于数字签名
         * @param decript
         * @return
         */
        public static String encryptSHA1(String decript) {
            try {

                // 获得SHA-1摘要算法的 MessageDigest 对象
                MessageDigest digest = MessageDigest.getInstance(SHA);
                //MessageDigest digest = java.security.MessageDigest.getInstance(SHA2);

                // 使用指定的字节更新摘要
                digest.update(decript.getBytes());

                // 获得密文
                byte[] messageDigest = digest.digest();

                // 把密文转换成十六进制的字符串形式
                StringBuffer hexString = new StringBuffer();

                // 字节数组转换为 十六进制 数
                for (int i = 0; i < messageDigest.length; i++) {
                    String shaHex = Integer.toHexString(messageDigest[i] & 0xFF);
                    if (shaHex.length() < 2) {
                        hexString.append(0);
                    }
                    hexString.append(shaHex);
                }
                return hexString.toString();

            } catch (NoSuchAlgorithmException e) {
                e.printStackTrace();
            }
            return null;
        }
    }

    展开全文
  • import java.security.... * 采用SHA加密 * * @author peipei3514 * @datetime 2017-8-11 12:00:34 */ public class SHAUtil { /*** * SHA加密 生成40位SHA码 */ public static String shaEncode(...
    import java.security.MessageDigest;
    
    /**
     * 采用SHA加密
     * 
     * @author peipei3514
     * @datetime 2017-8-11 12:00:34
     */
    public class SHAUtil {
    	/***
    	 * SHA加密 生成40位SHA码
    	 */
    	public static String shaEncode(String data) throws Exception {
    		MessageDigest sha = MessageDigest.getInstance("SHA");
    
    		byte[] byteArray = data.getBytes("UTF-8");
    
    		// md5Bytes的长度为20
    		byte[] md5Bytes = sha.digest(byteArray);
    
    		// 转换成16进制字符串
    		StringBuffer hexValue = new StringBuffer();
    		for (int i = 0; i < md5Bytes.length; i++) {
    			int val = ((int) md5Bytes[i]) & 0xff;
    
    			// 为了满足40位长度,当值小于16时需要先添加一位0(小于16的话用一位就能表示)
    			if (val < 16) {
    				hexValue.append("0");
    			}
    			hexValue.append(Integer.toHexString(val));
    		}
    		return hexValue.toString();
    	}
    
    	public static void main(String args[]) throws Exception {
    		String str = new String("1A2B3C4D5E");
    		System.out.println("原始:" + str);
    		System.out.println("SHA后:" + shaEncode(str));
    	}
    }
    
    展开全文
  • 一些常见的加密解密算法和摘要算法源码,如SHA1,CRC32,IDEA,AES等,与大家分享一下,希望对大家有帮助。
  • 包括(SHA算法,HMAC算法,DES算法,PBE算法,AES算法,RSA算法,数字签名,D-H算法等)
  • sha加密算法是安全哈希算法(Secure Hash Algorithm)的简称,主要适用于数字签名标准(Digital Signature Standard DSS)里面定义的数字签名算法(Digital Signature Algorithm DSA)。主要包括SHA-1,SHA-224,SHA...

             sha加密算法是安全哈希算法(Secure Hash Algorithm)的简称,主要适用于数字签名标准(Digital Signature Standard DSS)里面定义的数字签名算法(Digital Signature Algorithm DSA)。主要包括SHA-1,SHA-224,SHA-256,SHA-384,和SHA-512这几种单向散列算法。本篇就利用jdk自带的方法实现其中的几种加密算法。

             

    1. 首先我们自行配置开发环境并安装myeclipse软件,然后打开myeclipse软件,然后再导航菜单处点击File然后选择New-->Java Project。进行创建java项目。

      sha加密算法介绍以及java实现sha加密算法
    2.  

      然后我们在创建项目的页面,输入本次测试的项目名称:SHAJDKUtil,选择项目所需要的jre环境,此次测试中我们选择自定义配置好的jdk7。以上都编写完成后,然后点击Finish。进行创建java项目。

      sha加密算法介绍以及java实现sha加密算法
    3.  

      然后在我们刚刚创建好的项目上右击,选择New-->Class,进行实体类的创建。

      sha加密算法介绍以及java实现sha加密算法
    4.  

      在实体类创建界面,我们输入包名称为:com.util,类名称为:SHAUtil,然后勾选自动生成main函数。以上都正确后我们点击Finish。完成实体类的创建。

      sha加密算法介绍以及java实现sha加密算法
    5.  

      由于本项目内计算加密后的数据为byte数组形式,我们首先编写将byte数组转换为16进制字符串输出。本篇中方法名称为:convertByteToHexString。具体实现方式如下图所示。

      sha加密算法介绍以及java实现sha加密算法
    6.  

      然后我们编写利用jdk自带的类实现SHA1加密算法。本篇中我们使用方法为:jdksha1,需要传入要加密的字符串。具体加密代码如下图所示。

      sha加密算法介绍以及java实现sha加密算法
    7.  

      然后我们接着编写利用jdk自带的类实现SHA-256加密算法,本篇中我们编写的方法为:jdksha256,需要传入参数字符串。具体的加密代码如下图所示。

      sha加密算法介绍以及java实现sha加密算法
    8.  

      然后我们接着编写利用jdk自带的类实现SHA-384加密算法,本篇中我们使用的方法为:jdksha384,需要参数字符串。具体的加密代码实现如下图所示。

      sha加密算法介绍以及java实现sha加密算法
    9.  

      然后我们接着编写利用jdk自带的类实现SHA-512加密算法,本篇中我们使用的方法为:jdksha512,需要参数字符串。具体的加密代码实现如下图所示。

      sha加密算法介绍以及java实现sha加密算法
    10.  

      最后我们在main方法内调用加密方法。对以上编写的加密方法进行测试。首先我们定义要加密的字符串为:jdksha,然后分别调用以上编写的不同加密方式的加密方法,具体实现方式如下图所示。

      sha加密算法介绍以及java实现sha加密算法
    11.  

      最后我们运行程序,查看结果信息可以看到已经加密成功。如下图所示,至此本篇教程完成。

      sha加密算法介绍以及java实现sha加密算法
    12.  

             

    展开全文
  • 加密解密算法介绍

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

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

    对称加密算法 对称加密算法是应用较早的加密算法,技术成熟。在对称加密算法中,数据发信方将明文(原始数据)和加密密钥一起经过特殊加密算法处理后,使其变成复杂的加密密文发送出去。收信方收到密文后,若想解读原文,则需要使用加密用过的密钥及相同算法的逆算法对密文进行解密,才能使其恢复成可读明文。在对称加密算法中,使用的密钥只有一个,发收信双方都使用这个密钥对数据进行加密和解密,这就要求解密方事先必须知道加密密钥。对称加密算法的特点是算法公开、计算量小、加密速度快、加密效率高。不足之处是,交易双方都使用同样钥匙,安全性得不到保证。此外,每对用户每次使用对称加密算法时,都需要使用其他人不知道的惟一钥匙,这会使得发收信双方所拥有的钥匙数量成几何级数增长,密钥管理成为用户的负担。对称加密算法在分布式网络系统上使用较为困难,主要是因为密钥管理困难,使用成本较高。在计算机专网系统中广泛使用的对称加密算法有DES和IDEA等。美国国家标准局倡导的AES即将作为新标准取代DES。

    不对称加密算法不对称加密算法使用两把完全不同但又是完全匹配的一对钥匙—公钥和私钥。在使用不对称加密算法加密文件时,只有使用匹配的一对公钥和私钥,才能完成对明文的加密和解密过程。加密明文时采用公钥加密,解密密文时使用私钥才能完成,而且发信方(加密者)知道收信方的公钥,只有收信方(解密者)才是唯一知道自己私钥的人。不对称加密算法的基本原理是,如果发信方想发送只有收信方才能解读的加密信息,发信方必须首先知道收信方的公钥,然后利用收信方的公钥来加密原文;收信方收到加密密文后,使用自己的私钥才能解密密文。显然,采用不对称加密算法,收发信双方在通信之前,收信方必须将自己早已随机生成的公钥送给发信方,而自己保留私钥。由于不对称算法拥有两个密钥,因而特别适用于分布式系统中的数据加密。广泛应用的不对称加密算法有RSA算法和美国国家标准局提出的DSA。以不对称加密算法为基础的加密技术应用非常广泛。

    不可逆加密算法 不可逆加密算法的特征是加密过程中不需要使用密钥,输入明文后由系统直接经过加密算法处理成密文,这种加密后的数据是无法被解密的,只有重新输入明文,并再次经过同样不可逆的加密算法处理,得到相同的加密密文并被系统重新识别后,才能真正解密。显然,在这类加密过程中,加密是自己,解密还得是自己,而所谓解密,实际上就是重新加一次密,所应用的“密码”也就是输入的明文。不可逆加密算法不存在密钥保管和分发问题,非常适合在分布式网络系统上使用,但因加密计算复杂,工作量相当繁重,通常只在数据量有限的情形下使用,如广泛应用在计算机系统中的口令加密,利用的就是不可逆加密算法。近年来,随着计算机系统性能的不断提高,不可逆加密的应用领域正在逐渐增大。在计算机网络中应用较多不可逆加密算法的有RSA公司发明的MD5算法和由美国国家标准局建议的不可逆加密标准SHS(Secure Hash Standard:安全杂乱信息标准)等。

    SHA(不可逆)是一种数据加密算法,该算法经过加密专家多年来的发展和改进已日益完善,现在已成为公认的最安全的散列算法之一,并被广泛使用。该算法的思想是接收一段明文,然后以一种不可逆的方式将它转换成一段(通常更小)密文,也可以简单的理解为取一串输入码(称为预映射或信息),并把它们转化为长度较短、位数固定的输出序列即散列值(也称为信息摘要或信息认证代码)的过程。
    散列算法
      散列是信息的提炼,通常其长度要比信息小得多,且为一个固定长度。加密性强的散列一定是不可逆的,这就意味着通过散列结果,无法推出任何部分的原始信息。任何输入信息的变化,哪怕仅一位,都将导致散列结果的明显变化,这称之为雪崩效应。散列还应该是防冲突的,即找不出具有相同散列结果的两条信息。具有这些特性的散列结果就可以用于验证信息是否被修改。
    单向散列函数一般用于产生消息摘要,密钥加密等,常见的有:
    MD5(Message Digest Algorithm 5)(不可逆):是RSA数据安全公司开发的一种单向散列算法。
    SHA(Secure Hash Algorithm)(不可逆):可以对任意长度的数据运算生成一个160位的数值。
    SHA-1:该算法输入报文的最大长度不超过264位,产生的输出是一个160位的报文摘要。输入是按512 位的分组进行处理的。SHA-1是不可逆的、防冲突,并具有良好的雪崩效应。
    SHA-1与MD5的比较
      因为二者均由MD4导出,SHA-1和MD5彼此很相似。相应的,他们的强度和其他特性也是相似,但还有以下几点不同:
      l 对强行攻击的安全性:最显著和最重要的区别是SHA-1摘要比MD5摘要长32 位。使用强行技术,产生任何一个报文使其摘要等于给定报摘要的难度对MD5是2^128数量级的操作,而对SHA-1则是2^160数量级的操作。这样,SHA-1对强行攻击有更大的强度。
      l 对密码分析的安全性:由于MD5的设计,易受密码分析的攻击,SHA-1显得不易受这样的攻击。
      l 速度:在相同的硬件上,SHA-1的运行速度比MD5慢。

    RSA(不对称)算法

    RSA算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作。 RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的所有密码攻击,已被ISO推荐为公钥数据加密标准。RSA算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但那时想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。

    RSA的缺点主要有:
    A)产生密钥很麻烦,受到素数产生技术的限制,因而难以做到一次一密。
    B)分组长度太大,为保证安全性,n 至少也要 600bits以上,使运算代价很高,尤其是速度较。
    C)RSA密钥长度随着保密级别提高,增加很快。

    数据加密标准DES(对称算法):

    DES 使用一个 56 位的密钥以及附加的 8 位奇偶校验位,产生最大 64 位的分组大小。这是一个迭代的分组密码,使用称为 Feistel 的技术,其中将加密的文本块分成两半。使用子密钥对其中一半应用循环功能,然后将输出与另一半进行“异或”运算;接着交换这两半,这一过程会继续下去,但最后一个循环不交换。DES 使用 16 个循环,使用异或,置换,代换,移位操作四种基本运算。
    攻击 DES 的主要形式被称为蛮力的或彻底密钥搜索,即重复尝试各种密钥直到有一个符合为止。如果 DES 使用 56 位的密钥,则可能的密钥数量是 2 的 56 次方个。随着计算机系统能力的不断发展,DES 的安全性比它刚出现时会弱得多,然而从非关键性质的实际出发,仍可以认为它是足够的。不过 ,DES 现在仅用于旧系统的鉴定,而更多地选择新的加密标准 — 高级加密标准(Advanced Encryption Standard,AES)。

    BASE64

    Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,大家可以查看RFC2045~RFC2049,上面有MIME的详细规范。Base64编码可用于在HTTP环境下传递较长的标识信息。在一些应用程序中常常需要把二进制数据编码为适合放在URL(包括隐藏表单域)中的形式。此时,采用Base64编码不仅比较简短,同时也具有不可读性,即所编码的数据不会被人用肉眼所直接看到。

    展开全文
  • 对于需要还原的信息,则需要采用可逆的加密解密算法。 下面一组PHP函数是实现此加密解密的方法: 加密算法如下:复制代码 代码如下:function encrypt($data, $key){ $key = md5($key); $x = 0; $len = ...
  • 由于SHA3算法的详细介绍非常的少,本文档主要用于深入理解SHA3算法的原理。
  • 加密解密算法工具集

    2021-03-05 00:30:27
    自己写的非常强大的一个加密解密工具,有DES、3DES(含ECB和CBC)、RSA、SHA1、SHA256、SHA512、MD5、CRC、base64、异或运算等
  • Go 加密解密算法总结

    千次阅读 2020-09-23 14:53:39
    加密解密在实际开发中应用比较广泛,常用加解密分为:“对称式”、“非对称式”和”数字签名“。 对称式:对称加密(也叫私钥加密)指加密和解密使用相同密钥的加密算法。具体算法主要有DES算法,3DES算法,TDEA算法,...
  • 常见的加密解密算法

    千次阅读 2019-09-16 11:15:24
    网络中传输敏感信息的时候通常会对字符串做加密解密处理 1.Base64位加密(可加密解密) 最简单的加密方式,没有密钥,这种方式只要让别人拿到你的密文,就可以直接解密,只能用来迷惑,一般情况下不单独使用,因为...
  • Java简单实现DES加密解密算法

    千次阅读 2019-04-02 11:14:30
    Java简单实现DES加密解密算法 文章目录Java简单实现DES加密解密算法DES算法介绍实现相关java类代码实现 DES算法介绍 DEC加密算法属于对称加密,即利用指定的密钥,按照密码的长度截取数据,分成数据块,和密钥进行...
  • SHA加密算法

    2018-01-06 15:23:01
    SHA加密解密系统学习!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  • java之加密解密算法

    千次阅读 2014-04-16 23:23:43
    java中几种加密解密算法 加密算法有很多种,这里只大约列举几例: 1:消息摘要:(数字指纹):既对一个任意长度的一个数据块进行计算,产生一个唯一指纹。MD5/SHA1 发送给其他人你的信息和摘要,其他人用相同...
  • 图像加密解密算法

    2019-03-04 22:47:44
    A novel gray-level image encryption/decryption scheme is proposed, which is based on quantum Fourier transform and double random-phase encoding technique
  • java 加密解密算法MD5/SHA1,DSA

    万次阅读 2012-06-07 19:52:49
    通常,使用的加密算法 比较简便高效,密钥简短,加解密速度快,破译极其困难。本文介绍了 MD5/SHA1,DSA,DESede/DES,Diffie-Hellman的使用。 第1章基础知识 1.1. 单钥密码体制 单钥密码体制是一种传统的加密
  • 在项目开发过程中,当操作一些用户的隐私信息,诸如密码、帐户...关于加密解密 当前我们项目中常用的加解密的方式无非三种. 对称加密, 加解密都使用的是同一个密钥, 其中的代表就是AES 非对加解密, 加解密使...
  • Java常用加密解密核心算法

    千次阅读 2020-08-24 16:55:38
    最近面试被问到了一些常见的加密解密算法,特此整理记录。 加密算法我们整体可以分为:可逆加密算法和不可逆加密算法。可逆加密算法又可以分为:对称加密算法和非对称加密算法。 一、不可逆加密算法 常见的不可逆...
  • PHP可逆加密解密算法

    千次阅读 2017-05-24 11:08:32
    对于需要还原的信息,则需要采用可逆的加密解密算法。 下面一组PHP函数是实现此加密解密的方法:   加密算法如下: Php代码  function encrypt($data, $key)  {   $ke
  • PHP一组可逆加密解密算法

    千次阅读 2014-01-28 23:39:33
    对于大部分密码加密,...对于需要还原的信息,则需要采用可逆的加密解密算法。下面一组PHP函数是实现此加密解密的方法: 加密算法如下: function encrypt($data, $key) { $key = md5($key); $x = 0; $len = strle
  • AES加密解密&&SHA1、SHA加密&&MD5加密

    万次阅读 2015-12-17 09:35:15
    AES加密解密 SHA1、SHA加密 MD5加密 二话比说马上附上代码:
  • [iOS]加密解密算法

    千次阅读 2014-05-24 14:56:15
    本文简单的归纳了一下iOS使用的各种加密解密算法(因为比较简单,所以本文不涉及具体的代码实现。未提及RSA加密算法的相关信息)。 对数据加密后进行保存/传输用得较多的是AES和DES,都是对称加密,相对来说AES速度...
  • 总结加密解密函数 /** * 加密 * @param string $string 要加密或解密的字符串 * @param string $operation 加密 '' 解密 DECODE * @param string $key 密钥,加密解密时保持一致 * @param int $expiry 有效...
  • MD5加密解密算法

    千次阅读 2017-11-06 23:18:50
    MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法),主流编程语言普遍已有MD5实现。 将数据(如汉字)运算为另一固定...
  • 加密解密算法java实现(3)—RSA

    千次阅读 2016-12-22 15:25:09
    加密解密算法java实现(1)—RSA
  • java加密解密算法

    千次阅读 2009-08-24 19:03:00
    通常,使用的加密算法 比较简便高效,密钥简短,加解密速度快,破译极其困难。本文介绍了 MD5/SHA1,DSA,DESede/DES,Diffie-Hellman的使用。第1章基础知识1.1. 单钥密码体制单钥密码体制是一种传统的加密算法,是指...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 32,557
精华内容 13,022
关键字:

sha加密解密算法