- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我目前正在尝试编写一个 python 服务器脚本,该脚本应根据其公钥对当前客户端进行身份验证。由于我使用的是扭曲的,example in the twisted documenteation让我开始了。
虽然我可以使用示例代码生成 key 、连接和通信,但我还没有找到以可用格式获取客户端公钥的方法。在 this stackexchange question有人从 OpenSSL.crypto.PKey
中提取公钥对象,但不能将其转换为可读格式。因为我可以访问 PKey
verifyCallback
中 x509 证书的对象方法或通过 self.transport.getPeerCertificate()
从我的协议(protocol)的任何方法来看,这将是一个很好的方法。 (未接受)答案建议尝试 crypto.dump_privatekey(PKey)
.不幸的是,这并没有真正产生预期的结果:而 BEGIN PRIVATE KEY
和 BEGIN PRIVATE KEY
在答案中可以通过简单的文本替换功能修复,base64 字符串似乎与公钥不匹配。我用 openssl rsa -in client.key -pubout > client.pub
提取了公钥如前所述here .它与 dump_privatekey
的结果不匹配功能。
虽然还有一个 open bug towards OpenSSL on launchpad ,目前还没有确定。它是 19 个月前报道的,最近(2012 年 10 月)有一些事件,我不希望在 repos 中快速修复。
您是否有任何其他想法可以让我以类似于 client.pub
的格式获得公钥?我上面提到的文件?可能有一个扭曲的或 OpenSSL 连接特定对象保存此信息。请注意,我必须将公钥存储在协议(protocol)对象中,以便我以后可以访问它。
抱歉,我没有想到无法将证书与连接相关联的可能性。我添加了必须将公钥存储在协议(protocol)实例中的要求。因此,使用 peerX509.as_pem()
在postConnectionCheck
里面J.F. 塞巴斯蒂安建议的功能不起作用。此外,至少在 python-m2crypto 的 0.21.1-2ubuntu3 版本中我必须调用 peerX509.get_rsa().as_pem()
获得正确的公钥。使用 peerX509.as_pem(None)
(因为 peerX509.as_pem()
仍然需要密码)产生与 crypto.dump_privatekey(PKey)
完全相同的输出在 PyOpenSSL 中。可能有错误。
除此之外,答案还向我展示了使用以下 Echo
编写另一种解决方法的可能方法协议(protocol)类:
class Echo(Protocol):
def dataReceived(self, data):
"""As soon as any data is received, write it back."""
if self.transport.checked and not self.pubkeyStored:
self.pubkeyStored = True
x509 = m2.ssl_get_peer_cert(self.transport.ssl._ptr())
if x509 is not None:
x509 = X509.X509(x509, 1)
pk = x509.get_pubkey()
self.pubkey = pk.get_rsa().as_pem()
print pk.as_pem(None)
print self.pubkey
self.transport.write(data)
如您所见,它使用了一些我想阻止的内部类。我正在犹豫提交一个小补丁,它会添加一个 getCert
TLSProtocolWrapper
的方法M2Crypto.SSL.TwistedProtocolWrapper 中的类。即使它被上游接受,它也会破坏我的脚本与除最先进的 m2crypto 版本之外的任何版本的兼容性。你会怎么做?
好吧,这是一个基于外部系统命令的丑陋解决方法,在我看来,它甚至比访问非公共(public)属性更糟糕。
最佳答案
以前的一些答案产生(显然?)工作 PEM 公钥文件,但据我所试,它们都没有产生与“openssl rsa -pubout -in priv.key”相同的输出。这对我的测试套件非常重要,在查看 (0.15.1) PyOpenSSL 代码后,这适用于标准 PKey 对象和由 x509.get_pubkey() 方法创建的仅限公钥的 PKey 对象:
from OpenSSL import crypto
from OpenSSL._util import lib as cryptolib
def pem_publickey(pkey):
""" Format a public key as a PEM """
bio = crypto._new_mem_buf()
cryptolib.PEM_write_bio_PUBKEY(bio, pkey._pkey)
return crypto._bio_to_string(bio)
key = crypto.PKey()
key.generate_key(crypto.TYPE_RSA, 2048)
print pem_publickey(key)
关于python - 使用 pyOpenSSL 从证书或其他连接信息中提取公钥,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13845470/
如何选择随机哈希键?对于 my Flash+Perl card game我正在尝试从哈希中随机选择一张卡片,其中的键是:“6 黑桃”、“6 俱乐部”等,如下所示: my $card; my $i =
每当我收到对端点的请求时,我都会使用openssl crate 生成随 secret 钥。我将使用新生成的 key 来加密请求数据,并将其作为响应发送回去。 use openssl::rsa::{Rs
我们知道,我们在代码中生成的“随机”数实际上是伪随机数。在Java的情况下,它们默认使用时间戳作为随机种子,并且从该点开始确定性地创建时间戳之后产生的每个随机数。 如果您使用随机数生成密码,并且恶意方
我想用java生成一个128位随 secret 钥。我正在使用以下内容: byte[] byteBucket = new byte[bytelength]; randomizer.nextBytes(
这个问题已经有答案了: Pick random property from a Javascript object (9 个回答) 已关闭 7 个月前。 如果我有以下内容: var liststuff
我做了一些研究,找不到我需要的东西,基本上我想生成一个具有以下格式的随 secret 钥 XXX-XXX-XXXX 最佳答案 这是一个快速的 Javascript 解决方案: let r = Math
在 Firebase 中,可以使用 .childByAutoId() 创建随 secret 钥 let newEntry = FBRef.child("category").childByAutoId
假设我有一个带有大量键的对象: const myObject = { "a": 1, "b": 2, "c": 3, ... } 如果我存储了一个单独的 key 列表,
我需要计算一些字符串的签名,并计划这样做: using (HMACSHA256 hmacSha256 = new HMACSHA256( )) { Byte[] dataToHmac
我的任务是生成随机的 80 字节 key ,我决定遵循以下策略 在我的电脑中sizeof(char)=1 所以我创建了一个英文字母数组 char *p=" "; char a[0..26] and i
我正在设计一个广告系统,该系统根据广告的权重(出价)在广告之间随机轮换。 local ads = local ads = { ["a"] = { views = 0,
我有一个整数列表(员工 ID)它们都是8位长(虽然几乎都是00开头,但实际上都是8位长) 我需要为每个员工生成一个 key : - 5 chars including [A-Z][a-z][0-9]
我使用 KeyPairGenerator 生成 RSA key 对,我注意到它始终生成完全匹配的 key ,而不是应有的随 secret 钥?也许有人知道为什么会这样? 我的代码现在看起来像这样: p
我正在运行一个 FIRESTORE 数据库,我想创建一个具有与 firestore 相同的模式 的随 secret 钥。 在链接中,我找到了创建文档后调用的函数with: 'db.ref.add()'
这个问题已经有答案了: Add a property to a JavaScript object using a variable as the name? (14 个回答) Creating ob
我想生成 1M 随机(出现)唯一字母数字键并将它们存储在数据库中。每个 key 的长度为 8 个字符,并且仅使用子集“abcdefghijk n pqrstuvxyz 和 0-9”。 字母 l、m、o
我想生成像“7HzdUakp”这样的唯一 key 。 我想将其放入数据库(mysql)中,但我想要几乎无限的组合。 我可以使用随机函数生成它,但有时它可以生成相同的 key 两次 已解决 - 我根据“
我有一个我似乎无法弄清楚的基本问题。我正在尝试在 AES-256-CBC 中生成一个可用于加密/解密数据的随 secret 钥。 这是我正在做的: require 'openssl' cipher =
如果您对 Azure 网站使用自动缩放,是否需要设置计算 secret 钥,以便可以在计算机之间共享加密的身份验证 token ? 这里有一个问题,似乎be the same正如我所问的那样。然而,这
我想根据创建日期和时间从 Firebase 中检索数据我还没有找到任何其他方法,而不是通过使用 orderByChild("Create") 创建每个用户的 child 来保存创建日期和时间排序,但是
我是一名优秀的程序员,十分优秀!