Vij*_*Dev 19 google-chrome-extension
Google Chrome使用字母数字哈希作为Chrome扩展程序的标识符.例如."ajpgkpeckebdhofmmjfgcjjiiejpodla"是XMarks Bookmark Sync扩展的标识符.
这里使用哪种算法来生成这样的字符串?他们如何确保独特性?
小智 32
确切地说,它是在基数16中编码的RSA公钥的SHA256的前128位.
另一个随机的琐事是编码使用ap而不是0-9a-f.原因是源的主机字段中的前导数字字符最终会被Chrome视为潜在的IP地址.在提出它之后,我们在内部将其称为"mpdecimal".
Moh*_*our 17
Chromium通过公钥生成id.如果您使用扩展程序库,他们会为您处理所有这些.
从来源:
bool Extension::GenerateId(const std::string& input, std::string* output) {
CHECK(output);
if (input.length() == 0)
return false;
const uint8* ubuf = reinterpret_cast<const unsigned char*>(input.data());
SHA256Context ctx;
SHA256_Begin(&ctx);
SHA256_Update(&ctx, ubuf, input.length());
uint8 hash[Extension::kIdSize];
SHA256_End(&ctx, hash, NULL, sizeof(hash));
*output = StringToLowerASCII(HexEncode(hash, sizeof(hash)));
ConvertHexadecimalToIDAlphabet(output);
return true;
}
Run Code Online (Sandbox Code Playgroud)
看一下extension.cc文件,它有更详细的信息,比如生成.pem文件exncoding/decoding等.
小智 15
这是一个linux one liner:
cat FILE.PEM | openssl rsa -pubout -outform DER | openssl dgst -sha256 | awk '{print $2}' | cut -c 1-32 | tr '0-9a-f' 'a-p'
Run Code Online (Sandbox Code Playgroud)
格式良好,易于阅读
cat FILE.PEM | \
openssl rsa -pubout -outform DER | \
openssl dgst -sha256 | \
awk '{print $2}' | \
cut -c 1-32 | \
tr '0-9a-f' 'a-p'
Run Code Online (Sandbox Code Playgroud)
我发布了一个简短的Ruby脚本来从私钥计算扩展ID:http://supercollider.dk/2010/01/calculating-chrome-extension-id-from-your-private-key-233.这几乎遵循了Erik Kay对格式的描述.
归档时间: |
|
查看次数: |
7471 次 |
最近记录: |