如您所知,OAuth可以支持RSA-SHA1签名。我有一个OAuthSignature
接口,它具有以下方法
public String sign(String data, String consumerSecret, String tokenSecret) throws GeneralSecurityException;
我成功实施并测试了HMAC-SHA1签名(OAuth支持)以及PLAINTEXT“签名”。
我搜索了谷歌,如果我需要使用SHA1withRSA
签名,我必须创建一个私钥:示例代码:
/**
* Signs the data with the given key and the provided algorithm.
*/
private static byte[] sign(PrivateKey key,
String data)
throws GeneralSecurityException {
Signature signature = Signature.getInstance("SHA1withRSA");
signature.initSign(key);
signature.update(data.getBytes());
return signature.sign();
}
现在,我如何获取OAuth密钥(key = consumerSecret& tokenSecret)并创建PrivateKey
以与SHA1withRSA
签名一起使用?
由于
9.3。 RSA-SHA1
RSA-SHA1签名方法使用 RSASSA-PKCS1-v1_5签名算法 如[RFC3447]中所定义(Jonsson,J。 和B. Kaliski,“公钥 密码学标准(PKCS)#1:RSA 密码;规格版本 2.1,“。”第8.2节(更简单地称为PKCS#1),使用SHA-1作为 EMSA-PKCS1-v1_5的哈希函数。它 假设消费者有 提供其RSA公钥 经验证的服务提供商方式, 以超出范围的方式 本规范。
我现在正在使用此(http://code.google.com/apis/gdata/docs/auth/oauth.html)作为执行RSA-SHA1签名的参考。
答案 0 :(得分:1)
OAuthSignature
接口来自哪个API?是否有可能RSA签名不需要tokenSecret
参数?
答案 1 :(得分:1)
似乎RSA-SHA1不需要消费者的秘密,你可以在这里引用Jersey工具https://svn.java.net/svn/jersey~svn/trunk/jersey/contribs/jersey-oauth/oauth-signature/src/main/java/,类com.sun.jersey.oauth.signature.RSA_SHA1。