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;
    }
}

Java加密解密算法-SHA加密相关推荐

  1. 一组PHP可逆加密解密算法

    对于大部分密码加密,我们可以采用md5.sha1等方法.可以有效防止数据泄露,但是这些方法仅适用于无需还原的数据加密. 对于需要还原的信息,则需要采用可逆的加密解密算法. 下面一组PHP函数是实现此加 ...

  2. php中文加密解密算法,一组PHP可逆加密解密算法

    对于大部分密码加密,我们可以采用md5.sha1等方法.可以有效防止数据泄露,但是这些方法仅适用于无需还原的数据加密. 对于需要还原的信息,则需要采用可逆的加密解密算法. 下面一组PHP函数是实现此加 ...

  3. url 加密解密, email 加密

    代码: <?php function random($length, $numeric = 0) {//返回随机数mt_srand((double)microtime() * 1000000); ...

  4. java 实现 DES加密 解密算法

    DES算法的入口参数有三个:Key.Data.Mode.其中Key为8个字节共64位,是DES算法的工作密钥:Data也为8个字节64位,是要被加密或被解密的数据:Mode为DES的工作方式,有两种: ...

  5. 【Android 安全】DEX 加密 ( Java 工具开发 | 加密解密算法 API | 编译代理 Application 依赖库 | 解压依赖库 aar 文件 )

    文章目录 一.加密解密算法 API 二.编译代理 Application 依赖库 三.解压代理 Application 依赖库 aar 文件 参考博客 : [Android 安全]DEX 加密 ( 常 ...

  6. AES加密解密算法Java实现

    AES加密算法是密码学中的高级加密标准(Advanced Encryption Standard,AES),又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准.这个标准用来替代原先的DE ...

  7. DES加密解密算法Java实现

    DES 使用一个 56 位的密钥以及附加的 8 位奇偶校验位,产生最大 64 位的分组大小.这是一个迭代的分组密码,使用称为 Feistel 的技术,其中将加密的文本块分成两半.使用子密钥对其中一半应 ...

  8. java 加密_Java版SMS4加密解密算法

    特别说明:该专栏文章均来源自微信公众号<大数据实战演练>,欢迎关注! 前言 最近工作中需要实现HBase自定义扩展sms4加密,今天就先来说一下Java版的SMS4加密解密算法的具体实现. ...

  9. 异或加密的java算法_Java使用异或运算实现简单的加密解密算法实例代码

    Java简单的加密解密算法,使用异或运算 实例1: package cn.std.util; import java.nio.charset.Charset; public class DeEnCod ...

最新文章

  1. 使用 JMeter 进行压力测试
  2. 【简明表】MATLAB + 矩阵运算
  3. JavaSE 国际化 简单例子
  4. 电赛推迟了,回家吗?
  5. Java 并发工具箱之concurrent包
  6. appium更新到1.8.2,不能打开运行的解决办法
  7. 数据装载指定一张表或者多张表直接装载到目标表_10
  8. python动态规划算法最大k乘积_C语言使用DP动态规划思想解最大K乘积与乘积最大问题...
  9. bucket sort sample sort 并行_Java 中 Arrays.sort 和 Arrays.parallelSort 哪个更快?
  10. UI设计还在为聊天界面苦恼?好的案例,打开任通二脉
  11. 产品要想跑得赢,政策定价来帮您
  12. linux网络线序MDI,网线RJ45(水晶头)线序排列以及八字口诀
  13. JSON 标准 ECMA-404
  14. tableViewCell、collectionViewCell、组头组尾等总结
  15. 开发一个渐进式Web应用程序(PWA)前都需要了解什么?
  16. Mybatis源码分析--关联表查询及延迟加载原理(二)
  17. 3D 渲染的 5 种方式
  18. 微信小程序装修解决方案ppt_微信小程序开发教程.ppt
  19. mac下的socket调试工具---sokit
  20. GD库图片裁剪指定形状解决办法(PHP GD库 海报)

热门文章

  1. Develop as One | 2021 Google 开发者大会主旨演讲精彩回顾
  2. MFC与坦克大战系列(奇迹冬瓜)---chapter2(photoshop与TransparentBlt---快速生成背景与透明位图处理)
  3. CPU的典型故障剖析
  4. 天气预报属于计算机的哪一项应用,计算机基础知识模拟题答案
  5. 解决Oracle存储生僻字、oracle生僻字,oracle偏僻字、数据库生僻字,数据库偏僻字
  6. HDT_2029 Palindromes _easy version
  7. 华为1+x拓扑图资源
  8. 真正重要的10个联盟营销指标
  9. PyQt5 鼠标点击事件(点击响应事件可自定义):鼠标单击、双击、滚轮滚动、释放、移动等
  10. 用c语言编程牛顿环实验,C语言下迈克耳孙干涉仪测量空气折射率的实验探究.pdf...