我正在查看微信的文档,发现他们正在使用SHA-1。我觉得这并不安全,但是我的朋友说“没关系,我们使用https”,所以我想知道使用SHA-1或其他工具是否重要? https何时加密我们的请求?
谢谢!
这是微信的文件: https://developers.weixin.qq.com/doc/offiaccount/en/Basic_Information/Access_Overview.html
private function checkSignature()
{
$signature = $\GET["signature"];
$timestamp = $\GET["timestamp"];
$nonce = $\GET["nonce"];
$token = TOKEN;
$tmpArr = array($token, $timestamp, $nonce);
sort($tmpArr, SORT_STRING);
$tmpStr = implode( $tmpArr );
$tmpStr = sha1( $tmpStr );
if( $tmpStr == $signature ){
return true;
}else{
return false;
}
}
答案 0 :(得分:0)
SHA-1是一种单向哈希函数...尽管在大多数情况下不应该使用它,但是在您的情况下,因为您将其用于微信,所以别无选择,只能使用它,除非微信修改在那里实施。
还要回答您的另一个问题,即HTTPS对您的请求进行加密时,所以HTTPS是一种协议,可确保对移动中的数据进行保护和加密。
当浏览器尝试访问受SSL保护的网站时,浏览器和Web服务器使用称为“ SSL握手”的过程建立SSL连接(请参见下图)。请注意,SSL握手对用户是不可见的,并且会立即发生。
基本上,使用三个密钥来建立SSL连接:公共,私有和会话密钥。用公钥加密的任何内容都只能用私钥解密,反之亦然。
由于使用私钥和公钥进行加密和解密需要大量处理能力,因此仅在SSL握手期间使用它们来创建对称会话密钥。建立安全连接后,会话密钥用于加密所有传输的数据。
答案 1 :(得分:0)
SHA-1是一种单向哈希函数。在大多数情况下应避免使用此方法,但在您的情况下,微信无法为您提供任何替代选择(尽管微信当然可以在将来修改其实现)。
还可以回答您的其他问题,即HTTPS何时加密您的请求; HTTPS是一种协议,可确保对移动中的数据进行安全保护和加密。
当浏览器尝试访问受SSL保护的网站时,浏览器和Web服务器将进入一系列消息交换,这也称为“ SSL握手”。 SSL握手发生在幕后,对用户透明。
握手过程导致使用公共和私有密钥对建立会话密钥。然后,使用会话密钥来建立SSL连接。
由于对称加密在功率方面更有效,因此仅在SSL握手期间使用PKI部分来建立对称会话密钥。使用共享的对称密钥对运动中的数据进行加密。