Google chrome extension 如何为Google Chrome扩展生成appID

Google chrome extension 如何为Google Chrome扩展生成appID,google-chrome-extension,Google Chrome Extension,可能重复: 我正在构建一个程序包,并试图找出如何通过编程从包内容生成appID appID是一个32字节的字符串,由小写字母组成,如下所示: 根据,appID“基于扩展公钥的散列生成”,并用于唯一标识扩展 由于我希望能够在不使用Chrome GUI的情况下打包扩展,并且公钥已经包含在包内容中,有人能告诉我这些内容是如何生成的吗?这是以特殊方式编码为字符串的公钥的一部分: 我已经获得了Ruby示例代码: Chrome扩展开发者Erik Kay on Stack 溢出: 准确地说,它是RSA公

可能重复:

我正在构建一个程序包,并试图找出如何通过编程从包内容生成appID

appID是一个32字节的字符串,由小写字母组成,如下所示:

根据,appID“基于扩展公钥的散列生成”,并用于唯一标识扩展


由于我希望能够在不使用Chrome GUI的情况下打包扩展,并且公钥已经包含在包内容中,有人能告诉我这些内容是如何生成的吗?

这是以特殊方式编码为字符串的公钥的一部分:

我已经获得了Ruby示例代码:

Chrome扩展开发者Erik Kay on Stack 溢出:

准确地说,它是RSA公共密钥的SHA256的前128位 以基数16编码的密钥。另一个随机的琐事是 编码使用a-p而不是0-9a-f。原因是 原点的主机字段中的数字字符可能最终被删除 被Chrome视为潜在IP地址。我们在内部提到它 作为“mpdecimal”在提出它的人之后

下面是一个简短的Ruby脚本,可以实现这一点:

require "openssl"
require "digest/sha2"

def pkey_to_id(pkey)
  # Key algorithm, found in <http://github.com/Constellation/crxmake>.
  algo = %w(30 81 9F 30 0D 06 09 2A 86 48 86 F7 0D 01 01 01 05 00 03 81 8D 00).map{ |s| s.hex }.pack("C*")
  # Calculate public key, get hex hash of first 128 bits / 32 characters
  hash = Digest::SHA256.hexdigest(algo + OpenSSL::PKey::RSA.new(pkey).public_key.to_der)[0...32]
  # Shift hex from 0-9a-f to a-p
  hash.unpack("C*").map{ |c| c < 97 ? c + 49 : c + 10 }.pack("C*")
end
需要“openssl”
需要“摘要/sha2”
def pkey_至_id(pkey)
#密钥算法,在中找到。
algo=%w(30 81 9F 30 0D 06 09 2A 86 48 86 F7 0D 01 01 05 00 03 81 8D 00)。地图{s | s.hex}.pack(“C*”)
#计算公钥,获取前128位/32个字符的十六进制哈希
hash=Digest::SHA256.hexdigest(algo+OpenSSL::PKey::RSA.new(PKey).public\u key.to\u der)[0…32]
#将六角从0-9a-f切换到a-p
hash.unpack(“C*”).map{C | C<97?C+49:C+10}.pack(“C*”)
结束

好奇。。。为什么要将其打包为*.crx,而不是仅仅将其上传到Chrome webstore?因为我希望能够自行托管以实现自动部署。“准确地说,这是以base 16编码的RSA公钥SHA256的前128位。”-