keystore相关问题

1.SHA1和公钥的区别

SHA1是一种哈希算法,用于将任意长度的数据映射为固定长度的数据,通常是160位。SHA1可以用于验证数据的完整性,例如在数字签名中。SHA1算法已经被认为不够安全,不再推荐使用,应该使用更安全的哈希算法,例如SHA-256或SHA-3。

公钥是一个加密系统中的重要组件,用于实现公钥加密和数字签名。公钥由两部分组成:公钥和私钥。公钥可以公开发布,任何人都可以使用它来加密数据或验证数字签名,而私钥是保密的,只有拥有者可以使用它来解密数据或签署数字签名。

在应用程序开发中,SHA1和公钥通常一起使用来验证应用程序的身份和完整性。例如,在Android应用程序中,应用程序必须使用特定的证书签名,该证书包含应用程序的公钥,以便Android操作系统可以验证应用程序的身份和完整性。SHA1被用于计算应用程序证书的指纹,而公钥被用于验证证书的签名。

2.如何提取.keystore文件的公钥

要从.keystore文件中提取公钥,可以使用Java开发工具包(JDK)中的keytool实用程序。keytool是一个命令行工具,可以用于管理Java密钥库和证书。以下是提取keystore文件中公钥的步骤:

打开终端或命令提示符窗口。

转到包含.keystore文件的目录。

运行以下命令:

keytool -list -rfc -keystore your_keystore_filename.keystore | openssl x509 -inform pem -pubkey

其中,“your_keystore_filename.keystore”是您的.keystore文件的名称。

您将被要求输入密钥库密码。输入密码并按Enter键。

公钥将以PEM格式输出到终端或命令提示符窗口。

此方法会打印出对应keystore的公钥信息和数字证书信息,例如:

-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAgJnqydDbwTEau/c89+73
M7heZ3y/U3iJy2JHYsHMKK6YIo6LvkLGQe7P4JznMh38OUwG0kDNK41Y+S5zLSm8
ssOCNEN3t8I0nB8RtkVU9IFZiypFQcqFkFS4EanYdNsW0tnkRyFUUe5/Qrs8qYqJ
c6mgKCV1NQxe8f78VyufhhQyBfZHu7WBtZ6ZnEhTesHCPorUwK7+MahEz8eHC06j
hKoSpeVgG2+8AKgxkGM2CN3LORo/svX6YvQ3m5f0CgoMHfjPvQHkGRP8Dk/50OhE
i7SOXV5xq52mjXFIzoRw3hallLLFrzv0Wag3CVtfzWZN1KnKwsnaechvOgNijUZn
KwIDAQAB
-----END PUBLIC KEY-----
-----BEGIN CERTIFICATE-----
MIIDTzCCAjegAwIBAgIEGJBI7DANBgkqhkiG9w0BAQsFADBXMQswCQYDVQQGEwJj
bjELMAkGA1UECBMCYmoxCzAJBgNVBAcTAmJqMQ4wDAYDVQQKEwViYWlkdTEOMAwG
A1UECxMFYmFpZHUxDjAMBgNVBAMTBWJhaWR1MCAXDTE2MTIwMjAzNDY0N1oYDzIw
NzEwOTA1MDM0NjQ3WjBXMQswCQYDVQQGEwJjbjELMAkGA1UECBMCYmoxCzAJBgNV
BAcTAmJqMQ4wDAYDVQQKEwViYWlkdTEOMAwGA1UECxMFYmFpZHUxDjAMBgNVBAMT
BWJhaWR1MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAgJnqydDbwTEa
u/c89+73M7heZ3y/U3iJy2JHYsHMKK6YIo6LvkLGQe7P4JznMh38OUwG0kDNK41Y
+S5zLSm8ssOCNEN3t8I0nB8RtkVU9IFZiypFQcqFkFS4EanYdNsW0tnkRyFUUe5/
Qrs8qYqJc6mgKCV1NQxe8f78VyufhhQyBfZHu7WBtZ6ZnEhTesHCPorUwK7+MahE
z8eHC06jhKoSpeVgG2+8AKgxkGM2CN3LORo/svX6YvQ3m5f0CgoMHfjPvQHkGRP8
Dk/50OhEi7SOXV5xq52mjXFIzoRw3hallLLFrzv0Wag3CVtfzWZN1KnKwsnaechv
OgNijUZnKwIDAQABoyEwHzAdBgNVHQ4EFgQUukg/L5xhiLkgedM2G7VYbFFW1y4w
DQYJKoZIhvcNAQELBQADggEBAHj93aHL/l/2bzuzeSgbE8+piM2HgALfy4JK9Gc9
WMPLYxuDOKTrYyEuOW1qoTVxh7MPr8bKRnup4tNg2jTE+zxIseHNWWoqM8nFCPvU
cE42vsJg8g9Nf9ZcyiyDSYF7+lNnzvJS16QQE6WaJ7UPmY26LJpHBo+8IorGbm6w
qGu3Ki8VnuoVbeIMoX3pB0+n1BvzIGOOztO+bXzydlWRnv+kTct1LnM7QQDecuSW
BBso98q8RuDN3KwGYZkU3BSm06Yg/L7YOU0jg51xQQKqXZiWkhriXCaHQI6DUtxc
z6I7UrWb30mWq8nPq0CRVUyPTvHeP14yCTuy6Ri5J6pbtkk=
-----END CERTIFICATE-----

3.获取keystore的SHA1:

keytool -list -v -keystore your_keystore_filename.keystore

得到的信号如下:

创建日期: 2016-12-2
条目类型: PrivateKeyEntry
证书链长度: 1
证书[1]:
所有者: CN=baidu, OU=baidu, O=baidu, L=bj, ST=bj, C=cn
发布者: CN=baidu, OU=baidu, O=baidu, L=bj, ST=bj, C=cn
序列号: 189048ec
有效期为 Fri Dec 02 11:46:47 CST 2016 至 Sat Sep 05 11:46:47 CST 2071
证书指纹:
	 MD5:  36:3C:92:44:ED:B8:2F:E4:AB:5A:DC:4D:F9:81:C2:44
	 SHA1: 8F:ED:D3:34:D9:56:C9:47:44:4B:C0:B2:43:C6:6C:EC:A5:BF:7E:56
	 SHA256: 6C:83:10:3C:7A:7D:0E:B1:65:CB:77:09:8B:10:A0:74:7B:A5:32:0C:68:30:AC:23:BB:48:C5:A7:CE:D6:7E:B5
签名算法名称: SHA256withRSA

你可能感兴趣的:(Android学习,keystore,公钥,SHA)