- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我刚开始介绍 X509 协议(protocol)、电子 token 和数字签名。我可以对文本进行数字签名。
问题是,我如何验证已签名的文本?在 linux 上,使用 openssl 还是 PHP?
例如,我有一个文本“Veridiane”,这是用 javascript 和 capicom 制作的数字签名的结果。
--bof--
MIIQ+QYJKoZIhvcNAQcCoIIQ6jCCEOYCAQExCzAJBgUrDgMCGgUAMAsGCSqGSIb3
DQEHAaCCD1MwggQ9MIIDJaADAgECAgEMMA0GCSqGSIb3DQEBBQUAMIGXMQswCQYD
VQQGEwJCUjETMBEGA1UEChMKSUNQLUJyYXNpbDE9MDsGA1UECxM0SW5zdGl0dXRv
IE5hY2lvbmFsIGRlIFRlY25vbG9naWEgZGEgSW5mb3JtYWNhbyAtIElUSTE0MDIG
A1UEAxMrQXV0b3JpZGFkZSBDZXJ0aWZpY2Fkb3JhIFJhaXogQnJhc2lsZWlyYSB2
MTAeFw0xMDEyMjMxNzUzNDRaFw0xNDEyMzEyMzU5NTlaMG4xCzAJBgNVBAYTAkJS
MRMwEQYDVQQKEwpJQ1AtQnJhc2lsMTQwMgYDVQQLEytBdXRvcmlkYWRlIENlcnRp
ZmljYWRvcmEgUmFpeiBCcmFzaWxlaXJhIHYxMRQwEgYDVQQDEwtBQyBDQUlYQSB2
MTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJ8LTiZlgB3un4bBJ2hP
BkKJKLAv5IGj+CCHdgo4bX+7RG94G9Acx0HNk4KdpnUhuoW8Q26c4+BmV2YGCFgd
EH6YI2IZ+7YUEUDzuxF3r2GxVJQqznDYz6uls4wkV5tjw3G39heZ44J8u+L67Wku
DZxXq8fCE6eLRtr+qaB4Kvi52WJ6p6qusYxzHMOyAa2gPKkkLcElpmFwbMLGYLMK
SJTJsSNhgSabJO4VAl/KBTj0mVKnZWj3KEu0ijMK2f4hKH3v5D1h55kcrh3ZYsGi
GoausqFwXtXvwz7ziE2CZGppXSFTAukAVyoryoP5CpY2jmLlIFl+XN61eUu+IB4w
MhECAwEAAaOBuzCBuDAUBgNVHSAEDTALMAkGBWBMAQEJMAAwPwYDVR0fBDgwNjA0
oDKgMIYuaHR0cDovL2FjcmFpei5pY3BicmFzaWwuZ292LmJyL0xDUmFjcmFpenYx
LmNybDAfBgNVHSMEGDAWgBRCsixcdAEHvpv/VTM77im7XZG/BjAdBgNVHQ4EFgQU
WlBSpTqO7xh8b2DxlDySZ2mtu0wwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8E
BAMCAQYwDQYJKoZIhvcNAQEFBQADggEBAEvd24KUj4azH8bZS2wVFV33AT4UEaMz
I3OhzcmRdrrbFO5l3X3S0cA23xyJvzV7nG1KxwSseSV03rftHwVEKkkgXReiD9bJ
hx/zxpYJrx+cTMp1kkg0ly+0puaVJHbuULfpVOtG5z4qB1ZfTzrGt3HTLTidkpTM
E4uGjEOnNV1W8+EjTrhtOh01WA2WiNBdv2/7NybUh4qD7ozqvG+XNQmvA/yAOs5X
+5V18FfvzmaGg4Pa6xEO8+ox3iKXP65iaPWU+nKfYSl4Wyfs7vyIEa0E6wJ7FeBu
CcSDRpHTFsyABqy5UAf3LLPMGpmteapmGTE7m3u2bDePaYijd+jhiwQwggWAMIIE
aKADAgECAggfLOkHGBalDTANBgkqhkiG9w0BAQUFADBdMQswCQYDVQQGEwJCUjET
MBEGA1UECgwKSUNQLUJyYXNpbDEgMB4GA1UECwwXQ2FpeGEgRWNvbm9taWNhIEZl
ZGVyYWwxFzAVBgNVBAMMDkFDIENBSVhBIFBGIHYxMB4XDTExMDYxNjE3MDYzNVoX
DTE0MDYxNTE3MDYzNVowgYkxCzAJBgNVBAYTAkJSMRMwEQYDVQQKDApJQ1AtQnJh
c2lsMSAwHgYDVQQLDBdDYWl4YSBFY29ub21pY2EgRmVkZXJhbDEXMBUGA1UECwwO
QUMgQ0FJWEEgUEYgdjExKjAoBgNVBAMMIUFORFJFWSBCSUJJQU5PIEpBUkRJTTow
NDY4OTM1MjY2NjCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA41zwjgCotpwL
soW/6C3fjo901Gh7kDZaycJ2VY05W4VmICLGilEThwDgaRPf+BiGeW9eSSfvm/kV
ICxY3ytd0SjT1P9NPnXhf2V/zkhz3pwm490iDtSQArh7rwFZGdIHaCrnCE8PtlhN
H3zfLtAUY1hbJ9ZxaejsXH8XQaL95iECAwEAAaOCApkwggKVMA4GA1UdDwEB/wQE
AwIF4DApBgNVHSUEIjAgBggrBgEFBQcDAgYIKwYBBQUHAwQGCisGAQQBgjcUAgIw
HQYDVR0OBBYEFP8s41Kn3bYpV4qqwhMJE4VU3eg9MB8GA1UdIwQYMBaAFH2C84gE
V6aFE1eMASaWdbPd4wk7MIGbBgNVHREEgZMwgZCBFmFuZHJleWphcmRpbUB5YWhv
by5jb22gFwYFYEwBAwagDgQMMDAwMDAwMDAwMDAwoB4GBWBMAQMFoBUEEzAwMDAw
MDAwMDAwMDAwMDAwMDCgPQYFYEwBAwGgNAQyMDIwODE5ODAwNDY4OTM1MjY2NjAw
MDAwMDAwMDAwMDAwMDAzNjcyMTY5MzcwRE5UTUcwZgYDVR0gBF8wXTBbBgZgTAEC
AwgwUTBPBggrBgEFBQcCARZDaHR0cDovL2NlcnRpZmljYWRvZGlnaXRhbC5jYWl4
YS5nb3YuYnIvZG9jdW1lbnRvcy9kcGNhYy1jYWl4YXBmLnBkZjCBuQYDVR0fBIGx
MIGuMC2gK6AphidodHRwOi8vbGNyLmNhaXhhLmdvdi5ici9hY2NhaXhhcGZ2MS5j
cmwwLqAsoCqGKGh0dHA6Ly9sY3IyLmNhaXhhLmdvdi5ici9hY2NhaXhhcGZ2MS5j
cmwwTaBLoEmGR2h0dHA6Ly9yZXBvc2l0b3Jpby5pY3BicmFzaWwuZ292LmJyL2xj
ci9DQUlYQS9BQ0NBSVhBUEYvYWNjYWl4YXBmdjEuY3JsMFYGCCsGAQUFBwEBBEow
SDBGBggrBgEFBQcwAoY6aHR0cDovL2NlcnRpZmljYWRvZGlnaXRhbC5jYWl4YS5n
b3YuYnIvYWlhL2FjY2FpeGFwZnYxLnA3YjANBgkqhkiG9w0BAQUFAAOCAQEAlXDd
LdvMX15mfXBEGnP5HTaIeA5xAa69OY/WZMRuzomzBT3VhlQmbmG2pyE0Zhwy36wD
rjFMlxXcAhBG9dwE7JdVWE1B8sk/0qM/l3XPPCqzk1TqBZS4fCFmOqAYetMqI+sx
pYov+VfaQmBPMnw/vsfRrbas2GOKDIFbG1q59d6gcTUKdfvW3vwmniURT1BuRhXh
Bi3+1zQbkxxIC5szI0bdM6Glc+71EeK8enitdPbgM6nkXGa7913hVlaGqb/sB6IZ
wnF23a+pF6LlGe/SfcrzEUM9ceIzP7/Xc7opX+KVdpBUQ3On63pt5I6uizjsP8V2
a80FsmQEOJRccQHByzCCBYowggRyoAMCAQICCGOZvGd7dH5OMA0GCSqGSIb3DQEB
BQUAMG4xCzAJBgNVBAYTAkJSMRMwEQYDVQQKEwpJQ1AtQnJhc2lsMTQwMgYDVQQL
EytBdXRvcmlkYWRlIENlcnRpZmljYWRvcmEgUmFpeiBCcmFzaWxlaXJhIHYxMRQw
EgYDVQQDEwtBQyBDQUlYQSB2MTAeFw0xMTAxMjQxNDUyNDVaFw0xNDEyMzExNDUy
NDVaMF0xCzAJBgNVBAYTAkJSMRMwEQYDVQQKDApJQ1AtQnJhc2lsMSAwHgYDVQQL
DBdDYWl4YSBFY29ub21pY2EgRmVkZXJhbDEXMBUGA1UEAwwOQUMgQ0FJWEEgUEYg
djEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDUbGB//Rz3iwzRkwM9
I07GFrQwLmUQ8paw5zFq0oz6HnWP34F7oE3rFo9X6ycmphnBnwN6GLYEiO3ClY+u
23EUBvUaBX3gNNYbkotncokwpg4QoZfOWyAhWuhpMNaZV9iXShAdQlgsjItkRvC9
3y/AqCWd2BKutcVT1gki1Qt/YR0H1IeetxsPtN20e3xsRc5SmOiXAX35/JlEsW0W
zceqCYNpYj8oOFF4aDy4eAdBQKRduxho8SDqA10A1NEN88RKrpMmXn/j+lO4JYcF
RfpzMPT/JRQZtkuNoqjm0jVA9eqV9Aoe/1oK8cTkVNCoIOQqrUM7mhN4Qp5Kis+A
nNklAgMBAAGjggI7MIICNzAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIB
BjAdBgNVHQ4EFgQUfYLziARXpoUTV4wBJpZ1s93jCTswHwYDVR0jBBgwFoAUWlBS
pTqO7xh8b2DxlDySZ2mtu0wwgcUGA1UdIASBvTCBujBbBgZgTAECAwgwUTBPBggr
BgEFBQcCARZDaHR0cDovL2NlcnRpZmljYWRvZGlnaXRhbC5jYWl4YS5nb3YuYnIv
ZG9jdW1lbnRvcy9kcGNhYy1jYWl4YXBmLnBkZjBbBgZgTAECAQgwUTBPBggrBgEF
BQcCARZDaHR0cDovL2NlcnRpZmljYWRvZGlnaXRhbC5jYWl4YS5nb3YuYnIvZG9j
dW1lbnRvcy9kcGNhYy1jYWl4YXBmLnBkZjCBswYDVR0fBIGrMIGoMCygKqAohiZo
dHRwOi8vbGNyLmNhaXhhLmdvdi5ici9hY2NhaXhhdjEuY3JsIDAtoCugKYYnaHR0
cDovL2xjcjIuY2FpeGEuZ292LmJyL2FjY2FpeGF2MS5jcmwgMEmgR6BFhkNodHRw
Oi8vcmVwb3NpdG9yaW8uaWNwYnJhc2lsLmdvdi5ici9sY3IvQ0FJWEEvQUNDQUlY
QS9hY2NhaXhhdjEuY3JsMFYGCCsGAQUFBwEBBEowSDBGBggrBgEFBQcwAoY6aHR0
cDovL2NlcnRpZmljYWRvZGlnaXRhbC5jYWl4YS5nb3YuYnIvYWlhL2FjY2FpeGFw
ZnYxLnA3YjANBgkqhkiG9w0BAQUFAAOCAQEAXRei0hphXf8SoGYDgY93qBDJoKbo
NRU24pC8j7D3YnC/Km1ZkETIf0OZh+aLHZ57QJXVQiz7Qkywzon5YSJFgX32tDsj
6nsk2q0eBdBZ3Z4MAQrmEvADUkQbm19c5Y8cNG1Y7utfxTz4ZjTwV6mCHkRPpCCA
nyPQz2j7yNNoWrr/nLSQyo7o97rAdQSIR0jw/vkPQND7fmsmh6chyXL46EUWiXSv
X9L/iiDKG832DO1HRWYaUQsMrBO3Ld0WHO3FcF2S4Ybua/ycWvBO7lBBuzFxJ/XK
UzcKeM5whwPhoDc0KOhcU2JfBJbHI7rR+QcWIiCkJlqU69KDqcYPhXTiDzGCAW4w
ggFqAgEBMGkwXTELMAkGA1UEBhMCQlIxEzARBgNVBAoMCklDUC1CcmFzaWwxIDAe
BgNVBAsMF0NhaXhhIEVjb25vbWljYSBGZWRlcmFsMRcwFQYDVQQDDA5BQyBDQUlY
QSBQRiB2MQIIHyzpBxgWpQ0wCQYFKw4DAhoFAKBdMBgGCSqGSIb3DQEJAzELBgkq
hkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTExMDYxNzA5MjMxNFowIwYJKoZIhvcN
AQkEMRYEFCm/wZ4YKPeROqe+YHGjJHAch4XqMA0GCSqGSIb3DQEBAQUABIGAv5Gg
H+8151ryCX7BvPQUHU6ve2PZuDcMNuTI2YypMycnkOXhJf9L6/3OVRp6mMla4Hz0
7LMUlT5jiCkpqOgvlqEPM0ZoIA2TC5rqU/s7mcet1uaKleGnzpAB7jnkfHHrFnOf
94BxEoInO7WHCaSSvzPgVbIiO20YQCh9iq8+MaU=
--eof--
提前致谢...
最佳答案
当然是用 openssl。您可以使用命令行版本,或者如果已编译则使用相应的 PHP API。看起来 openssl_verify()
是你需要的。看看 examples .
如果您说显示的 blob 是 x509 格式,那么您可能需要查看 openssl_x509_read()
也是。
关于php - 在 PHP、linux openssl 或其他任何工具上验证 x509 签名文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6385738/
问题故障解决记录 -- Java RMI Connection refused to host: x.x.x.x .... 在学习JavaRMI时,我遇到了以下情况 问题原因:可
我正在玩 Rank-N-type 并尝试输入 x x .但我发现这两个函数可以以相同的方式输入,这很不直观。 f :: (forall a b. a -> b) -> c f x = x x g ::
这个问题已经有答案了: How do you compare two version Strings in Java? (31 个回答) 已关闭 8 年前。 有谁知道如何在Java中比较两个版本字符串
这个问题已经有答案了: How do the post increment (i++) and pre increment (++i) operators work in Java? (14 个回答)
下面是带有 -n 和 -r 选项的 netstat 命令的输出,其中目标字段显示压缩地址 (127.1/16)。我想知道 netstat 命令是否有任何方法或选项可以显示整个目标 IP (127.1.
我知道要证明 : (¬ ∀ x, p x) → (∃ x, ¬ p x) 证明是: theorem : (¬ ∀ x, p x) → (∃ x, ¬ p x) := begin intro n
x * x 如何通过将其存储在“auto 变量”中来更改?我认为它应该仍然是相同的,并且我的测试表明类型、大小和值显然都是相同的。 但即使 x * x == (xx = x * x) 也是错误的。什么
假设,我们这样表达: someIQueryable.Where(x => x.SomeBoolProperty) someIQueryable.Where(x => !x.SomeBoolProper
我有一个字符串 1234X5678 我使用这个正则表达式来匹配模式 .X|..X|X. 我得到了 34X 问题是为什么我没有得到 4X 或 X5? 为什么正则表达式选择执行第二种模式? 最佳答案 这里
我的一个 friend 在面试时遇到了这个问题 找到使该函数返回真值的 x 值 function f(x) { return (x++ !== x) && (x++ === x); } 面试官
这个问题在这里已经有了答案: 10年前关闭。 Possible Duplicate: Isn't it easier to work with foo when it is represented b
我是 android 的新手,我一直在练习开发一个针对 2.2 版本的应用程序,我需要帮助了解如何将我的应用程序扩展到其他版本,即 1.x、2.3.x、3 .x 和 4.x.x,以及一些针对屏幕分辨率
为什么案例 1 给我们 :error: TypeError: x is undefined on line... //case 1 var x; x.push(x); console.log(x);
代码优先: # CASE 01 def test1(x): x += x print x l = [100] test1(l) print l CASE01 输出: [100, 100
我正在努力温习我的大计算。如果我有将所有项目移至 'i' 2 个空格右侧的函数,我有一个如下所示的公式: (n -1) + (n - 2) + (n - 3) ... (n - n) 第一次迭代我必须
给定 IP 字符串(如 x.x.x.x/x),我如何或将如何计算 IP 的范围最常见的情况可能是 198.162.1.1/24但可以是任何东西,因为法律允许的任何东西。 我要带198.162.1.1/
在我作为初学者努力编写干净的 Javascript 代码时,我最近阅读了 this article当我偶然发现这一段时,关于 JavaScript 中的命名空间: The code at the ve
我正在编写一个脚本,我希望避免污染 DOM 的其余部分,它将是一个用于收集一些基本访问者分析数据的第 3 方脚本。 我通常使用以下内容创建一个伪“命名空间”: var x = x || {}; 我正在
我尝试运行我的test_container_services.py套件,但遇到了以下问题: docker.errors.APIError:500服务器错误:内部服务器错误(“ b'{” message
是否存在这两个 if 语句会产生不同结果的情况? if(x as X != null) { // Do something } if(x is X) { // Do something } 编
我是一名优秀的程序员,十分优秀!