精华内容
下载资源
问答
  • 以一个60M的文件为测试样本,经过1000次的测试平均值,三种算法的表现为: ...显然SHA256(又称SHA2)的安全性最高,但是耗时要比其他两种多很多。 MD5相对较容易碰撞: SHA1:2017年2月23日,Goo...

    1、性能方面

    以一个60M的文件为测试样本,经过1000次的测试平均值,三种算法的表现为:

    MD5算法运行1000次的平均时间为:226ms
    SHA1算法运行1000次的平均时间为:308ms
    SHA256算法运行1000次的平均时间为:473ms

    2、安全性方面

    • SHA256(又称SHA2)的安全性最高,但是耗时要比其他两种多很多。
    • MD5相对较容易碰撞,安全性不高:
    • SHA1安全性不高:2017年2月23日,Google公司公告宣称他们与CWI Amsterdam合作共同创建了两个有着相同的SHA-1值但内容不同的PDF文件,这代表SHA-1算法已被正式攻破。[16]。以上来自:https://zh.wikipedia.org/wiki/SHA-1

    3、实现

    1)JAVA原生API实现

    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.nio.MappedByteBuffer;
    import java.nio.channels.FileChannel;
    import java.security.MessageDigest;
    import java.security.NoSuchAlgorithmException;
    import java.util.zip.CRC32;
     
    public class FileSafeCode {
    	/**
    	 * 计算大文件 md5获取getMD5(); SHA1获取getSha1() CRC32获取 getCRC32()
    	 */
    	protected static char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e',
    			'f' };
    	public static MessageDigest messagedigest = null;
     
    	
     
    	/**
    	 * 对一个文件获取md5值
    	 * 
    	 * @return md5串
    	 * @throws NoSuchAlgorithmException
    	 */
    	public static String getMD5(File file) throws IOException, NoSuchAlgorithmException {
     
    		messagedigest = MessageDigest.getInstance("MD5");
    		FileInputStream in = new FileInputStream(file);
    		FileChannel ch = in.getChannel();
    		MappedByteBuffer byteBuffer = ch.map(FileChannel.MapMode.READ_ONLY, 0, file.length());
    		messagedigest.update(byteBuffer);
    		return bufferToHex(messagedigest.digest());
    	}
     
    	/**
    	 * // * @param target 字符串 求一个字符串的md5值 // * @return md5 value //
    	 */
    	// public static String StringMD5(String target) {
    	// return DigestUtils.md5Hex(target);
    	// }
     
    	/***
    	 * 计算SHA1码
    	 * 
    	 * @return String 适用于上G大的文件
    	 * @throws NoSuchAlgorithmException
    	 */
    	public static String getSha1(File file) throws OutOfMemoryError, IOException, NoSuchAlgorithmException {
    		messagedigest = MessageDigest.getInstance("SHA-1");
    		FileInputStream in = new FileInputStream(file);
    		FileChannel ch = in.getChannel();
    		MappedByteBuffer byteBuffer = ch.map(FileChannel.MapMode.READ_ONLY, 0, file.length());
    		messagedigest.update(byteBuffer);
    		return bufferToHex(messagedigest.digest());
    	}
     
    	/**
    	 * 获取文件SHA256码
    	 * 
    	 * @return String
    	 */
    	public static String getSha256(File file) throws OutOfMemoryError, IOException, NoSuchAlgorithmException {
    		messagedigest = MessageDigest.getInstance("SHA-256");
    		FileInputStream in = new FileInputStream(file);
    		FileChannel ch = in.getChannel();
    		MappedByteBuffer byteBuffer = ch.map(FileChannel.MapMode.READ_ONLY, 0, file.length());
    		messagedigest.update(byteBuffer);
    		return bufferToHex(messagedigest.digest());
    	}
     
    	/**
    	 * 获取文件CRC32码
    	 * 
    	 * @return String
    	 */
    	public static String getCRC32(File file) {
    		CRC32 crc32 = new CRC32();
    		// MessageDigest.get
    		FileInputStream fileInputStream = null;
    		try {
    			fileInputStream = new FileInputStream(file);
    			byte[] buffer = new byte[8192];
    			int length;
    			while ((length = fileInputStream.read(buffer)) != -1) {
    				crc32.update(buffer, 0, length);
    			}
    			return crc32.getValue() + "";
    		} catch (FileNotFoundException e) {
    			e.printStackTrace();
    			return null;
    		} catch (IOException e) {
    			e.printStackTrace();
    			return null;
    		} finally {
    			try {
    				if (fileInputStream != null)
    					fileInputStream.close();
    			} catch (IOException e) {
    				e.printStackTrace();
    			}
    		}
    	}
     
    	public static String getMD5String(String s) {
    		return getMD5String(s.getBytes());
    	}
     
    	public static String getMD5String(byte[] bytes) {
    		messagedigest.update(bytes);
    		return bufferToHex(messagedigest.digest());
    	}
     
    	/**
    	 * @Description 计算二进制数据
    	 * @return String
    	 */
    	private static String bufferToHex(byte bytes[]) {
    		return bufferToHex(bytes, 0, bytes.length);
    	}
     
    	private static String bufferToHex(byte bytes[], int m, int n) {
    		StringBuffer stringbuffer = new StringBuffer(2 * n);
    		int k = m + n;
    		for (int l = m; l < k; l++) {
    			appendHexPair(bytes[l], stringbuffer);
    		}
    		return stringbuffer.toString();
    	}
     
    	private static void appendHexPair(byte bt, StringBuffer stringbuffer) {
    		char c0 = hexDigits[(bt & 0xf0) >> 4];
    		char c1 = hexDigits[bt & 0xf];
    		stringbuffer.append(c0);
    		stringbuffer.append(c1);
    	}
     
    	public static boolean checkPassword(String password, String md5PwdStr) {
    		String s = getMD5String(password);
    		return s.equals(md5PwdStr);
    	}
    }

    2)Google Guava实现(推荐)

    /**
         * 计算一个文件的MD5、SHA1、SHA256值
         *
         */
        @Test
        public void testFileMD5() throws IOException {
            File file = new File(SOURCE_FILE);
            HashCode hashCode = Files.asByteSource(file).hash(Hashing.md5());
            System.out.println(hashCode);
    
            HashCode hashCode2 = Files.asByteSource(file).hash(Hashing.sha256());
            System.out.println(hashCode2);
    
            HashCode hashCode3 = Files.asByteSource(file).hash(Hashing.sha1());
            System.out.println(hashCode3);
        }

     

    展开全文
  • authentication plugin caching_sha2

    万次阅读 2018-05-17 10:01:41
    mysql 8.0 默认使用 caching_sha2_password 身份验证机制 —— 从原来的 mysql_native_password 更改为 caching_sha2_password。 从 5.7 升级 8.0 版本的不会改变现有用户的身份验证方法,但新用户会默认使用新的 ...

     

     

    mysql 8.0 默认使用 caching_sha2_password 身份验证机制 —— 从原来的 mysql_native_password 更改为 caching_sha2_password。 
    从 5.7 升级 8.0 版本的不会改变现有用户的身份验证方法,但新用户会默认使用新的 caching_sha2_password 。

    客户端不支持新的加密方式。

    方法之一,修改用户的密码和加密方式

    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';

     

    mysql8.*的新特性 caching_sha2_password 密码加密方式

    以前版本的mysql密码加密使用的是 mysql_native_password
    新添加的用户密码默认使用的 caching_sha2_password
    如果在以前mysql基础上升级的 就得用户使用的密码加密使用的是 mysql_native_password
    如果使用以前的密码加密方式,就修改文件 /etc/my.cnf

     

    [mysqld]
    default_authentication_plugin=mysql_native_password

     

    展开全文
  • SHA2 签名算法兼容性列表

    千次阅读 2016-04-14 09:16:28
    这些年来sha2的支持度在不断的提高。大多数浏览器,平台,邮件客户端和移动设备都已经支持sha2了。但是,仍有一些较老的系统,诸如windows xp sp3以前的系统不支持sha2算法。  很多单位在转型由SHA1升级至sha2的...

     

    这些年来sha2的支持度在不断的提高。大多数浏览器,平台,邮件客户端和移动设备都已经支持sha2了。但是,仍有一些较老的系统,诸如windows xp sp3以前的系统不支持sha2算法。 

    很多单位在转型由SHA1升级至sha2的时候,会遇到用户的体验问题,也就是兼容性。下面列举一些设备sha2的最小支持版本。

    浏览器和服务器的支持度

    浏览器

    最小支持sha2的版本

    Chrome

    26+

    Firefox

    1.5+

    Internet Explorer

    6+ (系统要求windows XP SP3+)

    Konqueror

    3.5.6+

    Mozilla

    1.4+

    Netscape

    7.1+

    Opera

    9.0+

    Safari

    3+ (苹果系统OS X 10.5)

    服务器

    最小支持sha2的版本

    4D Server

    14.01+

    Amazon Web Services (AWS)

    见备注

    Apache

    2.0.63+ w/ OpenSSL 0.9.8o+

    Barracuda Network Access Client

    3.5+

    Cisco ASA 5500

    8.2.3.9+(支持任意vpn会话); 8.4(2)+ (其他功能)

    Citrix Receiver

    Varies - See PDF (FIPS 140 & SHA-2 Line)

    CrushFTP

    7.1.0+

    F5 BIG-IP

    10.1.0+

    IBM Domino Server

    9.0+ (和 IBM HTTP Server 8.5+绑定使用)

    IBM HTTP Server

    8.5+ (和 IBM Domino Server 9+绑定使用)

    IBM z/OS

    v1r10+

    Java based products

    Java 1.4.2+

    Mozilla NSS Based Products

    3.8+

    OpenSSL based products

    OpenSSL 0.9.8o+

    Oracle Wallet Manager

    11.2.0.1+

    Oracle Weblogic

    10.3.1+

    SonicOS (SonicWALL)

    5.9.0.0+

    WebSphere MQ

    7.0.1.4+

    备注: 虽然AWS是兼容SHA-2,AWS实例是典型的虚拟专用服务器。因此,AWS SHA-2兼容取决于基础服务器平台。其他AWS应用程序(如弹性负载平衡(ELB))支持SHA-2证书。

    系统的SHA2支持度

    操作系统           ssl证书最低版本            客户端证书最低版本

    Android

    2.3+

    2.3+

    Apple iOS

    3.0+

    3.0+

    Blackberry

    5.0+

    5.0+

    ChromeOS

    支持

    支持

    Mac OS X

    10.5+

    10.5+

    Windows

    XP SP3+

    XP SP3+ (部分)

    Windows Phone

    7+

    7+

    Windows Server

    2003 SP2 +补丁 (部分)

    2003 SP2 +补丁 (部分)

     

    详细操作系统兼容性

    操作系统

    SSL证书(客户端)

    Ssl证书(服务器)

    S/MIME

    代码签名

    Mac OS X 10.5+

    Windows 8

    Windows 7

    部分

    Windows Vista

    部分

    Windows XP SP34

    部分

    部分

    Windows Server 2012 & 2012 R2

    Windows Server 2008 & 2008 R2

    部分

    Windows Server 2003 w/ KB 938397 3, 4

    部分

    部分

    Windows Phone 8

    Windows Phone 7

     

    详细的代码签名兼容性

    操作系统

    身份验证

    驱动签名

    VBA宏:Office 2003, 2007, 2010

    VBA 宏: Office 2013

    Windows 8

    Windows 7

    Windows Vista

    Windows XP SP3

    展开全文
  • 哈希算法(SHA1,SHA2,MD5)

    千次阅读 2019-08-25 10:10:01
    常见 加密算法比较:SHA1,SHA2,MD5, bcrypt SHA1 已经不安全 https://www.imooc.com/learn/977 https://ke.qq.com/course/282948?tuin=3c7aa859 1)加密算法加盐主要防止的是黑客拿到数据库,通过其中数据反推密码. ...

    散列 跟哈希(Hashing)是同一个意思

    对称与非堆成加密算法主要指的是可逆加密算法
    而哈希算法属于不可逆加密算法,所以无所谓对称加密还是非对称加密

    常见 Hash加密算法:SHA1,SHA2,MD5

    SHA1 已经不安全

    https://www.imooc.com/learn/977

    https://ke.qq.com/course/282948?tuin=3c7aa859

    1)加密算法加盐主要防止的是黑客拿到数据库,通过其中数据反推密码.
    如果是在线破解 .加salt根本没用,因为他的每一次尝试也会被你自动加盐.
    应该通过验证码增加延时,或者ip限制访问频次来限制.
    2)这种算法上的设计很多时候保障的目标是不能大规模泄露密码

    程序员如何查看进入 特定账户查看
    1先把用户HASH值保存好
    2将自己账户密码的HASH值替换特定用户的HASH值
    3用该用户账户 和自己的密码,登录
    查看完毕后
    再将HASH值替换回来

    感觉可以通过 cmd5验证是否安全

    https://www.cnblogs.com/lixiong/archive/2011/12/24/2300098.

    http://blog.sina.com.cn/s/blog_77e8d1350100wfc7.htmlhtml

    展开全文
  • 很多用户在使用Navicat Premium 12连接MySQL数据库时会出现Authentication plugin 'caching_sha2_password' cannot be loaded的错误,解决方法如下1. 管理员权限运行命令提示符,登陆MySQL mysql -u root -p ...
  • 5.7版本是:default_authentication_plugin=mysql_native_password8.x版本就是:default_authentication_plugin=caching_sha2_password有网友说是 将my.ini 中的配置改成5.7 就可以了,但是my.ini在哪儿呢。...
  • 密码学摘要算法之SHA2

    千次阅读 2019-08-22 07:00:38
    而我们所说的SHA2实际是对后面4中的统称。各种SHA算法的数据比较如下表,其中的长度单位均为: 原理 ##1. 消息的填充与解析 消息填充的目的是为了在消息填充后,在SHA-224和SHA-256中消息的长度正好是512位的整数倍,...
  • 开启Django服务时出现错误,错误信息如下: RuntimeError: cryptography is required for sha256_password or caching_sha2_password 解决方法:安装 cryptography pip install cryptography ...
  • mysql8 :客户端连接caching-sha2-password问题

    万次阅读 多人点赞 2018-04-24 11:40:20
    问题:caching-sha2-password处理: ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER; #修改加密规则 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '...
  • 基于FPGA的高性能SHA2-256加密IP

    千次阅读 2018-12-12 22:32:30
    SHA2-256 Encryption IP SHA2-256加密IP完全兼容消息摘要算法SHA2-256的实现。 Core可以接收长达2^64-1 bits的消息长度,按照512-bit大小对消息进行分块处理,并对不足512-bit的消...
  • C# 连接 mysql caching-sha2-password 问题

    千次阅读 2018-07-26 14:56:14
    记录C#连接mysql caching-sha2-password 错误 使用 Navicat 等管理工具连接正常 但使用 mysql.data.dll 报caching-sha2-password 错误 尝试下载 mysql-connector-net-8.0.11.msi ... #mys...
  • 最近下载新的MySQL8.0 来使用的时候, 通过sqlyog、或者程序中连接数据库时,提示:Authentication plugin 'caching_sha2_password' cannot be loaded 的错误,经查看发现,8.0改变了 身份验证插件 , 打开 my.ini ...
  • 背景 用docker构建mysql容器后...Authentication plugin 'caching_sha2_password' cannot be loaded: dlopen(/usr/local/mysql/lib/plugin/caching_sha2_password.so, 2): image not found mysqli_real_connect():...
  • 这段报错意思是说 sha256_password 和 caching_sha2_password 这两个加密算法需要用到 cryptography 。虽然意思很明了,但是可能不知道如何解决。 其实 cryptography 是一个python包,所以解决方法很简单: $ pip ...
  • Mysql8.0中caching_sha2_password报错解决

    千次阅读 2018-07-01 14:32:28
    在MySQL 8.0.11中,caching_sha2_password是默认的身份验证插件,而不是以往的mysql_native_password。有关此更改对服务器操作的影响以及服务器与客户端和连接器的兼容性的信息,请参阅caching_sha2_password作为...
  • 我现在使用的是SHA1,这两天要求我们重新申请certificate,从SHA1转换到SHA2,是不是可以直接应用到Production的环境中?会产生什么问题吗?需要测试一下吗?
  • 2059 - Authentication plugin 'caching sha2 password' cannot be loaded:(乱码不予展示) 原因: 在mysql8之前的版本中加密规则为mysql_native_password,而在mysql8以后的加密规则为caching_sha2_password ...
  • 报错原因:MySQL8.0版本以后采用caching_sha2_password作为默认的身份验证插件。 解决方法: 1. 登录mysql: mysql>mysql -u root -p Enter password: 2. 查询用户密码: mysql> se...
  • 最近遇到了java.sql.SQLException: Unable to load authentication plugin 'caching_sha2_password'.这个报错。 再此分享,希望能够对其他人有帮助, 主要原因8.x版本的验证模块和之前版本不同: 5.x版本是:...
  • 关于caching-sha2-password问题

    千次阅读 2018-08-10 16:41:01
    问题:caching-sha2-password 遇到这个问题了。是由于在mysql8之前的版本使用的密码加密规则是mysql_native_password,但是在mysql8则是caching_sha2_password。 处理:  ALTER USER 'root'@'localhost' ...
  • mysql 8.0 默认使用 caching_sha2_password 身份验证机制 —— 从原来的 mysql_native_password 更改为 caching_sha2_password。 从 5.7 升级 8.0 版本的不会改变现有用户的身份验证方法,但新用户会默认使用新的 ...
  • ‘caching_sha2_password’ cannot be loaded 问题 Navicat Premium 连接mysql报错:Authentication plugin 'caching_sha2_password' cannot be loaded 原因 mysql8之前,加密规则是mysql_native_password mysql...
  • mysql8 连接caching-sha2-password问题

    千次阅读 2018-11-30 16:44:14
    问题:caching-sha2-password 解决方式:  ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER; #修改加密规则   ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_...
  • MySQL8.0的caching_sha2_password问题

    万次阅读 多人点赞 2018-07-22 15:28:33
    分析及查找相关资料后,发现MySQL8.0采用了新的更安全的验证方式,详情请查看mysql-8-0-4-new-default-authentication-plugin-caching_sha2_password 不过,为什么增加了新的验证方式,就登录不了了呢,看提示是少...
  • 官方解释:https://dev.mysql.com/doc/refman/8.0/en/caching-sha2-pluggable-authentication.html 解决方法:  1.查询你的mysql数据库中user表plugin列的值,是否如下    如果跟图中的值不同,请进行下面的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 299,431
精华内容 119,772
关键字:

sha2