我必须以小端形式生成sha256数据哈希.在使用sha 256算法之前,我想知道是否必须先将其转换为big endian.或者,如果算法是"与endian无关"的.
编辑:对不起,我想我不清楚.我想知道的是:sha256算法需要用某些位填充消息的结尾.第一步是在消息的末尾添加1.然后,用零填充它直到结束.最后,您必须以位为单位添加消息的长度.我想知道的是这个填充是否可以用小端进行.例如,对于640位消息,我可以将最后一个字写为0x280(大端)或0x8002000(小端).这个填充可以用小端进行吗?
在从Zend Server CE 5.1升级到Zend Server CE 5.5期间,PHP也从5.3.5升级到5.3.8.在此转换之后,我正在处理的zend应用程序的登录功能突然中断.
试图调试它,看起来好像执行crypt()不反映PHP手册,或者我误解了它.如果我冒险猜测,那就是后者.
我使用一个16字符长的盐作为较大盐的一部分使用SHA256,它在PHP手册中用作示例.
$password = //string entered at login
$salt = '$5$rounds=250000$1234abcd5678defg$';
Run Code Online (Sandbox Code Playgroud)
在我输入密码后输入密码
$hash = crypt($password, $salt);
Run Code Online (Sandbox Code Playgroud)
我得到一个像这样的字符串作为返回值:
$5$rounds=250000$1234abcd5678$tI.Oiz.YwWjIwT3K.SLU8SwUZ9J0/odBCkbE6t0igeB
Run Code Online (Sandbox Code Playgroud)
令我感到困惑的是16字符盐,它是较大部分的一部分(上面的1234abcd5678defg),现在被截断为12个字符.
这是按预期的吗?该crypt()函数现在似乎比以前返回不同的结果 - 通常是PHP版本之间的?更改日志中没有任何内容表明加密算法有任何根本性的变化.
我有一张智能卡,我需要用这个来签名.这是我在stackover中看到的一个大问题.
我不能使用RSACryptoServiceProvider,bkz它不支持RSA-SHA256 alogrithm.
在First,我使用CAPICOM.dll,如下面的代码,
SignedData sed = new SignedData();
sed.Content = "a"; // data to sign
Signer ser = new Signer();
ser.Certificate = cc;
string singnn = sed.Sign(ser, false, CAPICOM_ENCODING_TYPE.CAPICOM_ENCODE_BASE64);
Run Code Online (Sandbox Code Playgroud)
但是没有公钥来验证我的签名值,我无法从capicom.dll获取验证密钥.
之后 ,
我使用X509Certificate2和RSACryptoServiceProvider,如下面的代码,
X509Certificate2 certificate = new X509Certificate2();
// Access Personal (MY) certificate store of current user
X509Store my = new X509Store(StoreName.My, StoreLocation.CurrentUser);
my.Open(OpenFlags.ReadOnly);
// Find the certificate we'll use to sign
RSACryptoServiceProvider csp = null;
foreach (X509Certificate2 cert in my.Certificates)
{
if (cert.Subject.Contains(certSubject))
{
// We found it. …Run Code Online (Sandbox Code Playgroud) 我正在尝试通过HTTP将SHA256哈希字符串发送到服务器,我想通过执行SHA256哈希并验证两个匹配来进行身份验证.出于测试目的,我使用相同的字符串,但是我的结果不匹配.这可能是我的base64_encode调用的默认编码方案吗?谢谢.
在PHP我正在做:
$sha = hash("sha256", $url, true);
$sha = base64_encode(urlencode($sha));
Run Code Online (Sandbox Code Playgroud)
在Go我正在做
//convert string to byte slice
converted := []byte(to_hash)
//hash the byte slice and return the resulting string
hasher := sha256.New()
hasher.Write(converted)
return (base64.URLEncoding.EncodeToString(hasher.Sum(nil)))
Run Code Online (Sandbox Code Playgroud) 如果采用32位序列并对其执行CRC32,则会得到另一个32位序列; 如果你做CRC32这个,你得到另一个,依此类推.很容易证明,如果你继续这样做,你最终会得到一个2 ^ 32位序列的循环,然后重新开始.
简单的问题:有没有人知道SHA256是否同样适用(或不相同),从256位序列开始?在重新开始之前,类似的过程会循环通过所有2 ^ 256个可能的256位序列的循环吗?或者这个哈希中是否有已知(或可能)更短的循环?
布赖恩
我可以在Scheme中使用SHA256使用外部库(Java,C或系统相关)或使用特定的Scheme实现(例如Chicken),但我想知道是否存在"纯"方案实现.
我试图找出为什么openssl中的hmac没有给我与java中的hmac相同的结果.
在开放的ssl
echo -n "Hello" | openssl dgst -sha256 -hmac 04d6b077d60e323711b37813b3a68a71
Run Code Online (Sandbox Code Playgroud)
输出:cc598d8840fe409d5fcc1c1c856f9e8c311d1c458850615555857b023f1cd94c
在java中
String key = "04d6b077d60e323711b37813b3a68a71"
SecretKeySpec key2 = new SecretKeySpec(Hex.decode(key), "RAW");
String data = "Hello";
Mac hmac = Mac.getInstance("Hmac-SHA256", BouncyCastleProvider.PROVIDER_NAME);
hmac.init(key2)
byte[] bytes = hmac.doFinal(data.getBytes());
System.out.println(Hex.toHexString(bytes));
Run Code Online (Sandbox Code Playgroud)
输出:877f9c8eb44c20987e3978928fbfcea0f1cf99c88f9db904596921b7ecf0613b
我不知道为什么这些不同.
我在https://paper-shape.com上的直接证书得到了一个弱签名算法SHA1:https://www.ssllabs.com/ssltest/analyze.html ? d = paper-shape.com
我按照这些说明.我根据OpenSSL和每个证书导出向导创建了我的pfx文件.
CRT和pem(来自startcom的直接证书)似乎没问题,因为以下命令在两者(CRT和PEM)上显示"签名算法:sha256WithRSAEncryption":
$ openssl x509 -text -in paper-shape.com.crt
在我的pfx创建过程中出现问题或者azure网站取消了我的直接证书.
有人有想法吗?
我有一个VSTO 2010 Excel加载项,目标是.Net Framework 4.0,Visual Studio 2010.
过去几年我们使用SHA-1证书来签署清单和程序集.该应用程序已部署给许多最终用户.现在,随着SHA-1弃用政策从2016年1月开始生效,CA发布的续订证书使用SHA-256进行密钥管理.
请查看使用各种版本的Visual Studio构建Excel 2010 VSTO加载项生成的文件:
注意:使用SHA-2算法键入用于以下所有情况的证书.
VS 2010 SP1,Target Framework 4.0生成的.VSTO:
在DigestMethod对于所提到的算法dependentAssembly的hash是SHA1,使用SHA2证书时也是如此.
<dependentAssembly dependencyType="install" codebase="ExcelAddIn1.dll.manifest" size="18274">
<assemblyIdentity name="ExcelAddIn1.dll" version="1.0.0.1" publicKeyToken="2142698160a31911" language="neutral" processorArchitecture="msil" type="win32" />
<hash>
<dsig:Transforms>
<dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" />
</dsig:Transforms>
<dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
<dsig:DigestValue>DIGEST VALUE</dsig:DigestValue>
</hash>
</dependentAssembly>
Run Code Online (Sandbox Code Playgroud)
下publisherIdentity标签,所述SignatureMethod和DigestMethod使用是SHA256,这是根据该证书的算法.
<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha256" />
<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" />
Run Code Online (Sandbox Code Playgroud)
.VSCO由VS 2013 SP4和VS 2015生成,目标框架4.0:
请注意<dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />标记中提到的算法是SHA1.这与VS 2010生成的内容相同.
<dependentAssembly dependencyType="install" codebase="ExcelAddIn1.dll.manifest" …Run Code Online (Sandbox Code Playgroud) 我试图更好地理解docker history输出。当我运行时,docker history nginx:latest我得到的输出几乎与Dockerfile相匹配:
/bin/sh -c #(nop) CMD ["nginx" "-g" "daemon off;"]
/bin/sh -c #(nop) EXPOSE 443/tcp 80/tcp/bin/sh -c ln -sf /dev/stdout /var/log/nginx/access.log && ln -sf /dev/stderr /var/log/nginx/error.log
/bin/sh -c apt-key adv --keyserver hkp://pgp.mit.edu:80 --recv-keys 573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62 && echo "deb http://nginx.org/packages/mainline/debian/ jessie nginx" >> /etc/apt/sources.list && apt-get update && apt-get install --no-install-recommends --no-install-suggests -y ca-certificates nginx=${NGINX_VERSION} nginx-module-xslt nginx-module-geoip nginx-module-image-filter nginx-module-perl nginx-module-njs gettext-base && rm -rf /var/lib/apt/lists/*
/bin/sh -c #(nop) ENV NGINX_VERSION=1.11.9-1~jessie
/bin/sh -c #(nop) MAINTAINER …Run Code Online (Sandbox Code Playgroud)