精华内容
下载资源
问答
  • MD5加密解密工具类

    千次阅读 2018-10-17 15:27:12
    MD5加密解密工具类

    MD5工具类代码如下

    import java.security.MessageDigest;
    
    public class MD5Utils {
    
        /*** 
         * MD5加码 生成32位md5码 
         */  
        public static String string2MD5(String inStr){  
            MessageDigest md5 = null;  
            try{  
                md5 = MessageDigest.getInstance("MD5");  
            }catch (Exception e){  
                System.out.println(e.toString());  
                e.printStackTrace();  
                return "";  
            }  
            char[] charArray = inStr.toCharArray();  
            byte[] byteArray = new byte[charArray.length];  
    
            for (int i = 0; i < charArray.length; i++)  
                byteArray[i] = (byte) charArray[i];  
            byte[] md5Bytes = md5.digest(byteArray);  
            StringBuffer hexValue = new StringBuffer();  
            for (int i = 0; i < md5Bytes.length; i++){  
                int val = ((int) md5Bytes[i]) & 0xff;  
                if (val < 16)  
                    hexValue.append("0");  
                hexValue.append(Integer.toHexString(val));  
            }  
            return hexValue.toString();  
    
        }  
    
        /** 
         * 加密解密算法 执行一次加密,两次解密 
         */   
        public static String convertMD5(String inStr){  
    
            char[] a = inStr.toCharArray();  
            for (int i = 0; i < a.length; i++){  
                a[i] = (char) (a[i] ^ 't');  
            }  
            String s = new String(a);  
            return s;  
    
        }  
    
        // 测试主函数  
        public static void main(String args[]) {  
            String s = new String("1111");  
            System.out.println("原始:" + s);  
            System.out.println("MD5后:" + string2MD5(s));  
            System.out.println("加密的:" + convertMD5(s));  
            System.out.println("解密的:" + convertMD5(convertMD5(s)));  
    
        }  
    
    }

    原始:1111
    MD5后:b59c67bf196a4758191e42f76670ceba
    加密的:EEEE
    解密的:1111

    展开全文
  • import java.io.UnsupportedEncodingException; import java.security.MessageDigest; import java.security.... * 采用MD5加密解密 * @author tfq * @datetime 2011-10-13 */ public class MD5Util { /***
    package com.yestar.common.utils;
    
    
    import java.io.UnsupportedEncodingException;
    import java.security.MessageDigest;
    import java.security.NoSuchAlgorithmException;
    
    /**
     * 采用MD5加密解密
     * @author tfq
     * @datetime 2011-10-13
     */
    public class MD5Util {
    
        /***
         * MD5加码 生成32位md5码
         */
        public static String string2MD5(String inStr){
            MessageDigest md5 = null;
            try{
                md5 = MessageDigest.getInstance("MD5");
            }catch (Exception e){
                System.out.println(e.toString());
                e.printStackTrace();
                return "";
            }
            char[] charArray = inStr.toCharArray();
            byte[] byteArray = new byte[charArray.length];
    
            for (int i = 0; i < charArray.length; i++)
                byteArray[i] = (byte) charArray[i];
            byte[] md5Bytes = md5.digest(byteArray);
            StringBuffer hexValue = new StringBuffer();
            for (int i = 0; i < md5Bytes.length; i++){
                int val = ((int) md5Bytes[i]) & 0xff;
                if (val < 16)
                    hexValue.append("0");
                hexValue.append(Integer.toHexString(val));
            }
            return hexValue.toString();
    
        }
    
        /**
         * 加密解密算法 执行一次加密,两次解密
         */
        public static String convertMD5(String inStr){
    
            char[] a = inStr.toCharArray();
            for (int i = 0; i < a.length; i++){
                a[i] = (char) (a[i] ^ 't');
            }
            String s = new String(a);
            return s;
    
        }
    
        // 测试主函数
        public static void main(String args[]) {
            String s = new String("13586785151");
            System.out.println("原始:" + s);
            System.out.println("MD5后:" + string2MD5(s));
            System.out.println("加密的:" + convertMD5(s));
            System.out.println("解密的:" + convertMD5(convertMD5(s)));
    
        }
    }
    
    展开全文
  • 跨平台 AES MD5 ECC DES RSA 加密解密 支持 进度 支持多种编码.源码.FlyUtils
  • 平凡也就两个字: 懒和惰;成功也就两个字: 苦和勤;优秀也就两个字: 你和我。...AES对称加密1 AES对称加密简介 高级加密标准(AES,Advanced Encryption Standard):是最常见的对称加密算法(对称加密...

    平凡也就两个字: 懒和惰;成功也就两个字: 苦和勤;优秀也就两个字: 你和我。跟着我从0学习JAVA、spring全家桶和linux运维等知识,带你从懵懂少年走向人生巅峰,迎娶白富美!每一篇文章都是心得总结,跟我学习你就是大牛!

    AES对称加密

    1 AES对称加密简介

          高级加密标准(AES,Advanced Encryption Standard):是最常见的对称加密算法(对称加密算法就是加密和解密用相同的密钥)。广泛应用于各种加密传输报文中,如:微信解密获取用户手机号,报文加密传输等。

          对称加密不同于信息摘要(MD5等),是真正意义上的加密算法。摘要算法(如MD5等)是不可逆的,它的主要作用是对信息一致性和完整性的校验。而对称加密算法(AES等)是可逆的,它的主要作用是保证私密信息不被泄露。

    2 AES的秘钥

          密钥是AES算法实现加密和解密的根本。对称加密算法之所以对称,是因为这类算法对明文的加密和对密文的解密使用的是同一个密钥。

          AES只支持三种长度(二进制位)的密钥:128位,192位和256位,分别对应16、24和32个字节。而java的字符串一个字符恰好为1个字节。因此加解密秘钥字符串长度只能为16、24或32个字符。不是这3种长度就会抛异常!

          平时大家所说的AES128,AES192,AES256,实际上就是指的AES算法对不同长度密钥的使用。那么AES128,AES192,AES256在使用效果上有什么不同呢?

          答:从安全性来看,AES256安全性最高。从性能来看,AES128性能最高。本质原因是它们的加密处理轮数不同。

    3 AES加密的特点

          AES加密有如下几个特点:

          (1)可逆:AES加密算法是可逆的。用相同的秘钥就可以解密出原数据;

          (2)简单、可靠和快速的加密方式;

          (3)加密和解密的秘钥是相同的。

    4 AES加解密流程

          加解密流程如图所示:

    cbdb080881f836b674fdd17c50270388.png

    5 AES加解密工具类

    import javax.crypto.Cipher;import javax.crypto.KeyGenerator;import javax.crypto.spec.SecretKeySpec;import lombok.extern.slf4j.Slf4j;import org.apache.commons.codec.binary.Base64;import org.apache.commons.lang3.StringUtils;import sun.misc.BASE64Decoder;@Slf4jpublic class AesUtil {  /**   * 加密解密密钥(必须为16、24或32位长度)   */  private static final String KEY = "123456789012345612345678";  /**   * 加密算法   */  private static final String ALGORITHMSTR = "AES/ECB/PKCS5Padding";  /**   * 加密   *   * @param content 待加密字符串   * @return 加密后的字符串   */  public static String aesEncrypt(String content) {    try {      return aesEncrypt(content, KEY);    } catch (Exception e) {      log.error(e.getMessage(), e);      return "";    }  }  /**   * 解密   *   * @param encrypt 加密字符串   * @return 解密后的字符串   */  public static String aesDecrypt(String encrypt) {    try {      return aesDecrypt(encrypt, KEY);    } catch (Exception e) {      log.error(e.getMessage(), e);      return "";    }  }  /**   * base64编码   *   * @param bytes 待编码的字节数组byte[]   * @return base64编码后的字符串   */  private static String base64Encode(byte[] bytes) {    return Base64.encodeBase64String(bytes);  }  /**   * base64解码   *   * @param base64Code 待解码的base64编码字符串   * @return 解码后的字节数组byte[]   */  private static byte[] base64Decode(String base64Code) throws Exception {    return StringUtils.isEmpty(base64Code) ? null : new BASE64Decoder().decodeBuffer(base64Code);  }  /**   * AES加密为base64编码字符串   *   * @param content 待加密的内容   * @param encryptKey 加密密钥   * @return base64编码字符串   */  private static String aesEncrypt(String content, String encryptKey) throws Exception {    return base64Encode(aesEncryptToBytes(content, encryptKey));  }  /**   * AES加密为字节数组   *   * @param content 待加密的内容   * @param encryptKey 加密密钥   * @return 加密后的byte[]   */  private static byte[] aesEncryptToBytes(String content, String encryptKey) throws Exception {    KeyGenerator kgen = KeyGenerator.getInstance("AES");    kgen.init(128);    Cipher cipher = Cipher.getInstance(ALGORITHMSTR);    cipher.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(encryptKey.getBytes(), "AES"));    return cipher.doFinal(content.getBytes("utf-8"));  }  /**   * AES解密   *   * @param encryptStr 待解密的内容   * @param decryptKey 解密密钥   * @return 解密后的string   */  private static String aesDecrypt(String encryptStr, String decryptKey) throws Exception {    return StringUtils.isEmpty(encryptStr) ? null : aesDecryptByBytes(base64Decode(encryptStr), decryptKey);  }  /**   * AES解密为字符串   *   * @param encryptBytes 待解密的字节数组byte[]   * @param decryptKey 解密密钥   * @return 解密后的String   */  private static String aesDecryptByBytes(byte[] encryptBytes, String decryptKey) throws Exception {    KeyGenerator kgen = KeyGenerator.getInstance("AES");    kgen.init(128);    Cipher cipher = Cipher.getInstance(ALGORITHMSTR);    cipher.init(Cipher.DECRYPT_MODE, new SecretKeySpec(decryptKey.getBytes(), "AES"));    byte[] decryptBytes = cipher.doFinal(encryptBytes);    return new String(decryptBytes);  }  /**   * AES加解密测试   */  public static void main(String[] args) throws Exception {    String content = "关注微信公众号:IT特靠谱";    String encrypt = aesEncrypt(content, KEY);    String decrypt = aesDecrypt(encrypt, KEY);    log.info("AES加密前:{}", content);    log.info("AES加密后:{}", encrypt);    log.info("AES解密后:{}", decrypt);  }}

    6 AES加解密测试结果

    3f72a59ba27a0bfafc272d57262331b8.png

          如果你有疑问或需要技术支持,关注公众号联系我吧~

    8416aee49d720ecd8705f1d2a835be5c.png

    展开全文
  • 一个伪装成Djvu勒索软件解密器的工具—STOP Djvu,正在互联网上传播。实际上,STOP Djvu本身就是一个勒索软件,它通过伪装成Djvu解密器并声称免费解密,来诱导中招勒索软件的人在计算机上运行它。而运行它的后果就是...

    一个伪装成Djvu勒索软件解密器的工具—STOP Djvu,正在互联网上传播。实际上,STOP Djvu本身就是一个勒索软件,它通过伪装成Djvu解密器并声称免费解密,来诱导中招勒索软件的人在计算机上运行它。而运行它的后果就是,计算机上已被加密的文件被再次加密。这些受害者在运行STOP Djvu之后不但没有免费解密成功,反而被另一种勒索软件再次感染,雪上加霜。

    当勒索软件操作如Maze, REvil, Netwalker和DoppelPaymer从受害者获取到巨额利益而得到广泛的媒体关注时,另一个名为STOP Djvu的勒索软件每天感染的人比上面提到的这些软件每天总感染人数还要多。

    ID-Ransomware勒索软件识别网站上每天会收到超过600个STOP Djvu样本的提交,STOP勒索软件是过去一年中最活跃的分发勒索软件

    37289db5b018b37360f022c0c30ef509.png

    Emsisoft和Michael Gillespie之前已经发布了一个针对旧版本STOP Djvu的解密器,但是它对STOP Djvu新版本无能为力。

    如果STOP勒索软件如此普遍,你可能会好奇为什么它没有得到太多关注?主要原因是该勒索软件主要目标为家庭用户,其捆绑成广告软件来冒充盗版软件

    虽然用户下载安装盗版软件的行为本身不对,但大多数被感染用户根本无力支付500美元的赎金来购买STOP Djvu解密器。

    对于一个已经被勒索软件搞得崩溃的人来说,再用另一个勒索软件对他的数据进行二次加密,无疑是进一步打击。

    Zorab对受害者的数据进行双重加密

    Michael Gillespie发现了另一个名为Zorab的勒索软件,它与STOP Djvu结合使用。

    STOP Djvu勒索软件正是Zorab的作者所编写的,STOP Djvu不会解密任何文件,而是使用另一个勒索软件Zorab来二次加密受害者已经被加密的所有数据

    8e05803d513e997aecf40f52bd9cf999.png

    当一个希望STOP Djvu能够解密他们的文件的用户在如上图所示的假解密器中输入他们的信息并点击“开始扫描”后,程序将提取另一个名为crab.exe的可执行文件并保存到%Temp%文件夹中,如下图所示

    4c8bb465c4935020a237ecd968899e5e.png

    Crab.exe是另一种名为Zorab的勒索软件,它会开始对电脑上的数据进行加密。加密文件时,勒索软件会将被加密后的文件的后缀修改为.ZRB

    20fe04d4fc58ffe08723aa8465842917.png

    勒索软件还会在每个文件加密的文件夹中创建名为‘—DECRYPT—ZORAB.txt.ZRB’的勒索信。勒索信里包含了如何联系并向勒索软件作者支付赎金和解密文件。

    75384b12e0c1943be698f6aac14ce783.png

    安全人员正在分析这个勒索软件,建议直到发现确实没有办法可以用来恢复被Zorab加密的文件之前,建议受感染的用户不要支付赎金。

    IOCs

    hashes:

    Fake decryptor:1abf41be04801cfc3478502127abc47c2d84253ab659d576e5c02cc0b716c782

    相关文件:

    Decryptor Djvu mlagham.exe%Temp%crab.exe--DECRYPT--ZORAB.txt.ZRB

    勒索信原文:

    —+-= ZORAB =-+—Attention! Attention! Attention!Your documents, photos, databases and other important files are encrypted and have the extension: .ZRBDon't worry, you can return all your files!The only method of recovering files is to purchase decrypt tool and unique key for you.This software will decrypt all your encrypted files.if you want to decrypt your filesThe only method of recovering files is to purchase decrypt toolThis tool will decrypt all your encrypted files.To get this software you need write on our e-mail: zorab28@protonmail.comWhat guarantees do we give to you?Its just a business. We absolutely do not care about you and your deals, except getting benefits.You can send 2 your encrypted file from your PC and we decrypt it for free.+--Warning--+DONT try to change files by yourself, DONT use any third party software for restoring your data Your personal id: xxx 

    勒索信大意如下

    注意!你的文件,图片,数据库和其他重要文件都被加密成后缀为.ZRB的文件了。请不要担心,你可以恢复你所有的文件。恢复文件的唯一方法是购买解密工具和你的独特密钥。该解密工具将解密您所有加密的文件。想要购买这个解密工具,你可以向我们发送邮件zorab28@protonmail.com。我们并不关心你本人的信息和你的数据,这只是为了赚点小钱。你可以发送你的被加密文件给我们,我们将免费解密它。警告,请你不要尝试自己修改文件,不要尝试使用任何第三方软件恢复你数据。你的个人id是:XXX

    相关邮件地址

    zorab28@protonmail.com

    原文链接:https://www.anquanke.com/post/id/207965

    展开全文
  • Java MD5 加密 解密 工具类

    千次阅读 2013-12-11 10:58:52
    public class MD5Helper { // 标准的构造函数,调用md5Init函数进行初始化工作 public MD5Helper() { md5Init(); return; } // RFC1321中定义的标准4*4矩阵的常量定义。 static final int
  • [java] view plaincopy package com.accountmanagement.techzero.util;...public class MD5Helper {  ... // 标准的构造函数,调用md5Init函数进行初始化工作   public MD5Helper() {   md
  • C# .net MD5加密解密工具及加密解密。使用方便,可直接下载加密解密代码在项目中使用。
  • java中常用的工具类之String和MD5加密解密类我们java程序员在开发项目的是常常会用到一些工具类。今天我分享一下我的两个工具类,大家可以在项目中使用。一、String工具类package com.itjh.javaUtil;import java.io....
  • MD5加密解密工具类

    千次阅读 2018-11-02 10:23:10
    MD5 加密/解密算法工具类 MD5加码 生成32位md5码  做登录注册页面输入密码后,存储加密后的密码到数据库保密用的 由于MD5是单向加密型 也就是只能加密不能解密 所以应该把用户的密码加密后与数据库的密码对照 ...
  • import java.security.MessageDigest;public class MD5Util {/*** Title: MD5加密 生成32位md5码* Description: TestDemo* @author lu* @date 2016年6月23日 下午2:36:07* @param inStr* @return 返回32位m...
  • 主要介绍了java中常用工具类之字符串操作类和MD5加密解密类,需要的朋友可以参考下
  • MD5解密加密工具类

    2017-12-14 13:41:00
    package com.fastech.ws;import java.security.MessageDigest;public class MD5Util { /** * Title: MD5加密 生成32位md5码 * Description: TestDemo * @author lu * @date 2016年6月23日 下午2:36:07 *...
  • JAVA中MD5加密解密(MD5工具类

    千次阅读 2019-12-05 17:45:26
    ASCII ((American Standard Code for Information Interchange): 美国信息交换标准代码) ...工具类如下: import org.apache.commons.codec.digest.DigestUtils; import java.math.BigInteger; import java.se...
  • } /** * md5加密算法进行加密(不可逆) * @param res 需要加密的原文 * @param key 秘钥 * @return */ public String MD5(String res, String key) { return keyGeneratorMac(res, HmacMD5, key); } /** * 使用SHA...
  • 解密工具集 对字符串做BASE64加密 解密 MD5加密 解密 DES加密 DES解密 AES加密 AES解密
  • MessageDigest md = MessageDigest.getInstance("MD5"); //将盐数据传入消息摘要对象 md.update(salt); //将口令的数据传给消息摘要对象 md.update(password.getBytes("UTF-8")); //生成输入口令...
  • c#加密解密工具类

    2017-08-14 09:26:52
    c#加密解密工具类 C# 加密 解密 md5 aes
  • java工具类专题-MD5加密解密

    千次阅读 2018-05-09 16:59:54
    先来指出一个博主的错误 ...这目录下的maven包是错的 <!... <groupId>commons-codec <artifactId>commons-codec <version>1.10 正确包已经贴出 ...Java工具类还是很强大的,不过还是需要深入了解一下
  • java中常用的工具类,用于MD5的加密,里面还有切割了MD5加密的长度,有DES加密与解密,并且配有main函数可测试,可以根据自己的实际情况使用main函数测试使用
  • MD5加密数据java工具类 项目中部署线上,禁止外网环境下明文传输登陆密码,于是通过前端AES加密数据,代码操作解密之后,再对数据进行加密,根据加密后的数据跟数据库的密码进行校验,个人觉得这种方式不合理,但是...
  • MD5算法,URLEncoding,Base64编码,AES,DES,DESede,RSA加密解密工具类和使用实例
  • 加密解密工具类

    2019-02-16 22:51:56
    MD5加密 “12345” 827ccb0eea8a706c4c34a16891f84e7b 2 SHA1加密 “12345” 8cb2237d0679ca88db6464eac60da96345513964 3 异或加密 “12345” бвгде 异或解密 &amp;lt;密文...
  • * AES工具类 20/11/13. */ public class AESUtils { /** * 加密方法 * * @param encData 要加密的数据 * @param key 加密的密钥 * @param tripIv 加密的偏移量 * @param encodeName 加密的编码 * @return...
  • MD5加密工具类

    2019-04-26 18:58:15
    MD5是一个常用加密手段,它只能加密不能解密。。。。。。。。。。 import java.security.MessageDigest; /** * MD5工具 */ public class MD5Util { public static final String CHARSET = "UTF-8"; public final...
  • Android MD5加密工具类

    2018-03-30 08:44:50
    在线加解密工具 ...MD5在线工具,我经常用来测试自己的工具类加密的密文是否正确 工具类 /** * Author:AND * Time:2018/3/27. * Email:2911743255@qq.com * Description: * Detail: */ pu...
  • MD5加密解密,可作为工具类模块保存

    千次阅读 多人点赞 2016-06-23 14:46:08
    public class MD5Util { ... * Title: MD5加密 生成32位md5码 * Description: TestDemo * @author lu * @date 2016年6月23日 下午2:36:07 * @param inStr * @return 返回32位md5码 * @throws

空空如也

空空如也

1 2 3 4 5 ... 19
收藏数 363
精华内容 145
关键字:

md5加密解密工具类