出于Ebics通信的目的,我需要生成rsa公钥的哈希值(sha256)。我已经尝试了两个解决方案:phpSecLib和linux命令openssl(我在phpSecLib的帮助下生成的public.pem文件-我认为public.pem是可以的,因为我尝试用我的密钥将模数和指数转换为pem): / p>
openssl pkey -in public.pem -pubin -pubout -outform DER | openssl dgst -sha256 -c
以上都不给我适当的结果。我现在该怎么办呢?银行向我发送其公钥的模数和指数以及相应的哈希值。 我也尝试过将密钥放入ebics文档中,但也没有成功。
银行密钥模数: 00f9d48dcb1a7d0cf09350c12fbc41fd1b212d1a49057bcbb404d1386da09d3ee1f1e25246608da8a826ad8f05bfdad6d447a471cefadd7202a01e5b6a1c7f4e93891d8d172a35c8667034a4dde709a3fca3070fc652ce97771778331e12e2d69ab406293cceb936d1d4bf41849b124d8739a37bfce039a833012f4795252161557b6e684ea377771f6c1c226a82772813819702756b0cea162c1c8a04105cc34018ca96fc025723d941752450643ae7f1452483f248907bc937a078f61377c7baf62f21fa368c5a9c45e69adc246a8ad0d2b880ccc4d7591d3b95f5f9f12c455540728afb9fed2276b2a1cffbe11c6af61bf494586c0b93f3ca1c235166de6c6d
银行密钥指数: 010001
正确的哈希值:
18 72 B2 39 FF 1C 68 5E 68 D8 DE D8 08 19 C0 4F 52 D8 70 E8 73 E7 56 89 99 99 4E 8C 23 45 32 1C
答案 0 :(得分:1)
如果打开EBICS规范,则将在5.5.1.1.1节中看到下一个描述。 “金融机构X002和X002的公钥的SHA-256哈希值 E002通过将指数与空白字符连接起来而组成 十六进制表示形式的模数(使用小写字母),不带前导 零(关于十六进制表示)。结果字符串必须是 转换为基于美国ASCII码的字节数组。”
因此,您可以打开任何在线的sha256生成器,然后输入“ 10001 f9d48dc ... e6c6d”,并获取适当的哈希值“ 1872..321C”
答案 1 :(得分:0)
似乎没有标准。对于不同的密钥格式,它将是不同的哈希。就我而言(出于Ebic的目的)其sha256(ltrim($ exponent,0)。''。$ modulus);