我只能找到有关Ruby片段的相关文章,并且仅在IA中可用:http
://web.archive.org/web/20120606044635/http:
//supercollider.dk/2010/01/calculating-
chrome扩展名来自您的私钥233
重要提示:
- 这取决于DER编码的公共密钥(原始二进制文件),而不取决于PEM编码的密钥(通过对DER密钥进行base64编码生成的漂亮ASCII)。
- 扩展ID为base-16,但使用[ap](称为“ mpdecimal”)而不是[0-9a-f]进行编码。
使用PEM编码的公钥,请执行以下步骤:
- 如果您的PEM格式的公钥仍然具有页眉和页脚并且被分成多行,请手动对其进行重新格式化,以使您拥有一个不包含页眉和页脚的单个字符串,并一起运行,以便密钥换行到下一个。
- base64解码公钥以呈现DER格式的公钥。
- 生成DER格式密钥的SHA256十六进制摘要。
- 取哈希的前32个字节。您将不需要其余的。
- 对于每个字符,将其转换为10为底,并为’a’添加ASCII码。
以下是执行此操作的Python例程:
import hashlibfrom base64 import b64depredef build_id(pub_key_pem): pub_key_der = b64depre(pub_key_pem) sha = hashlib.sha256(pub_key_der).hexdigest() prefix = sha[:32] reenpred = "" ord_a = ord('a') for old_char in prefix: pre = int(old_char, 16) new_char = chr(ord_a + pre) reenpred += new_char return reenpreddef main(): pub_key = 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCjvF5pjuK8gRaw/2LoRYi37QqRd48B/FeO9yFtT6ueY84z/u0NrJ/xbPFc9OCGBi8RKIblVvcbY0ySGqdmp0QsUr/oXN0b06GL4iB8rMhlO082HhMzrClV8OKRJ+eJNhNBl8viwmtJs3MN0x9ljA4HQLaAPBA9a14IUKLjP0pWuwIDAQAB' id_ = build_id(pub_key) print(id_)if __name__ == '__main__': main()非常欢迎您针对现有扩展名及其ID进行测试。要检索其PEM格式的公钥:
- 转到Chrome中现有扩展程序的列表。抓住扩展ID之一。
- 查找托管扩展的目录。在我的Windows 7框中,它是:C: Users <用户名> AppData Local Google Chrome User Data Default Extensions <扩展名>
- 从“ key”下的manifest.json文件中获取公共密钥。由于密钥已经准备好进行base64解码,因此可以跳过该过程的步骤(1)。
该示例中的公共密钥来自“ Chrome阅读器”扩展名。它的扩展名是“ lojpenhmoajbiciapkjkiekmobleogjc”。
也可以看看:
- Google Chrome-字母数字哈希标识扩展名
- http://blog.roomanna.com/12-14-2010/getting-an-extensions-id



