0x01:工具类
md5加密工具类base64加密工具类Bcrypt工具类public class MD5Utils {private static final String hexDigIts[] = {"0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"};/** * MD5加密 * @param origin 字符 * @param charsetname 编码 * @return */public static String MD5Encode(String origin, String charsetname){ String resultString = null;try{ resultString = new String(origin); MessageDigest md = MessageDigest.getInstance("MD5");if(null == charsetname || "".equals(charsetname)){ resultString = byteArrayToHexString(md.digest(resultString.getBytes())); }else{ resultString = byteArrayToHexString(md.digest(resultString.getBytes(charsetname))); } }catch (Exception e){ }return resultString; }public static String byteArrayToHexString(byte b[]){ StringBuffer resultSb = new StringBuffer();for(int i = 0; i < b.length; i++){ resultSb.append(byteToHexString(b[i])); }return resultSb.toString(); }public static String byteToHexString(byte b){int n = b;if(n < 0){ n += 256; }int d1 = n / 16;int d2 = n % 16;return hexDigIts[d1] + hexDigIts[d2]; }}
public class Base64Util {// 字符串编码private static final String UTF_8 = "UTF-8";/** * 加密字符串 * @param inputData * @return */public static String decodeData(String inputData) {try {if (null == inputData) {return null; }return new String(Base64.decodeBase64(inputData.getBytes(UTF_8)), UTF_8); } catch (UnsupportedEncodingException e) { }return null; }/** * 解密加密后的字符串 * @param inputData * @return */public static String encodeData(String inputData) {try {if (null == inputData) {return null; }return new String(Base64.encodeBase64(inputData.getBytes(UTF_8)), UTF_8); } catch (UnsupportedEncodingException e) { }return null; }public static void main(String[] args) { System.out.println(Base64Util.encodeData("我是中文"));String enStr = Base64Util.encodeData("我是中文"); System.out.println(Base64Util.decodeData(enStr)); }}
public class BcryptCipher {// generate salt seedprivate static final int SALT_SEED = 12;// the head fo saltprivate static final String SALT_STARTSWITH = "$2a$12";public static final String SALT_KEY = "salt";public static final String CIPHER_KEY = "cipher";/** * Bcrypt encryption algorithm method * @param encryptSource * need to encrypt the string * @return Map , two values in Map , salt and cipher */public static Map<String, String> Bcrypt(final String encryptSource) {String salt = BCrypt.gensalt(SALT_SEED); Map<String, String> bcryptResult = Bcrypt(salt, encryptSource);return bcryptResult; }/** * * @param salt encrypt salt, Must conform to the rules * @param encryptSource * @return */public static Map<String, String> Bcrypt(final String salt, final String encryptSource) {if (StringUtils.isBlank(encryptSource)) {throw new RuntimeException("Bcrypt encrypt input params can not be empty"); }if (StringUtils.isBlank(salt) || salt.length() != 29) {throw new RuntimeException("Salt can't be empty and length must be to 29"); }if (!salt.startsWith(SALT_STARTSWITH)) {throw new RuntimeException("Invalid salt version, salt version is $2a$12"); }String cipher = BCrypt.hashpw(encryptSource, salt); Map<String, String> bcryptResult = new HashMap<String, String>(); bcryptResult.put(SALT_KEY, salt); bcryptResult.put(CIPHER_KEY, cipher);return bcryptResult; }}
/** * MD5加密 */public class MD5Test {public static void main(String[] args) { String string = "我是一句话"; String byteArrayToHexString = MD5Utils.byteArrayToHexString(string.getBytes()); System.out.println(byteArrayToHexString);//e68891e698afe4b880e58fa5e8af9d }}
/** * base64加密 */public class Bast64Tester {public static void main(String[] args) { String string = "我是一个字符串"; String encodeData = Base64Util.encodeData(string); //加密 String decodeData = Base64Util.decodeData(encodeData); //解密 System.out.println(encodeData);//5oiR5piv5LiA5Liq5a2X56ym5Liy System.out.println(decodeData);//我是一个字符串}}
/** * SHA加密 */public class ShaTest {public static void main(String[] args) { String string = "我是一句话"; String sha256Crypt = Sha2Crypt.sha256Crypt(string.getBytes()); System.out.println(sha256Crypt);//$5$AFoQTeyt$TiqmobvcQXjXaAQMYosAAO4KI8LfigZMGHzq.Dlp4NC }}
/** * BCrypt加密 */public class BCryptTest {public static void main(String[] args
一款用于窃取 Facebook 登录凭证的恶意 Android 应用目前在 Google Play 商城上已经被安装超过 10 万次,而且该应用目前仍可下载(发稿时已下架)。这款恶意程序被伪装成“Craftsart Cartoon Photo Tools”卡通化应用,允许用户上传图片并将其转换为卡通...
一个由多个全球执法机构组成的联盟–包括FBI、特勤局、英国国家犯罪署、欧洲刑警组织和其他机构–最近领导了一次行动,以查封RaidForums拥有的网络域名。RaidForums.com通常被描述为世界上最大的黑客论坛之一,它承载着一个留言板系统,恶意方可以在这里购买、出售和交易来自重大漏洞的黑客和...
Mozilla 很高兴地宣布,Firefox 90 版本将支持基于“元数据请求标头”的获取功能,使得 Web 应用程序能够保护自身和用户免受各种跨源威胁。据悉,此类威胁涵盖了跨站点请求伪造(CSRF)、跨站点泄露(XS-Leaks)、以及投机性跨站点执行侧信道(Spectre)攻击。 跨站攻击的背...
据报道,全球最大的肉类供应商JBS在周日遭到了黑客的攻击,这是全球食品供应链所面临的又一威胁。此前,新冠疫情已经对全球食品供应链造成了较大影响。周一,JBS公司通过电子邮件向外界表示,公司服务器遭到黑客有组织的攻击,从而不得不关闭了位于北美和澳洲的计算机网络。 JBS表示,这起黑客攻击事件有可能会推...
上周,微软发现了针对政府雇员和权利组织的数千个账户的复杂型网络钓鱼攻击,并指向了幕后黑手 Nobelium 。此前,该黑客组织曾被认为与俄方情报机构 SVR 和近期的 SolarWinds 攻击有关。为了应对愈演愈烈的此类规模的网络攻击,这家软件巨头现又提出了新的防御建议 —— 鼓励客户积极采用云技...
美国联邦调查局(FBI)刚刚通报了一起高级持续性威胁(APT)事件,可知黑客利用了未经修补的 Fortinet 网络设备中的漏洞,对市级政府机构的网络造成破坏。由 FBI 官网披露的行业警报可知,有关部门在 2021 年 5 月检测到了入侵迹象。 其实早在 2021 年 4 月打上了另一款 For...