微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

0auth_signature 在 Java 中使用 SHA1-RSA

如何解决0auth_signature 在 Java 中使用 SHA1-RSA

在已经集成了oauth1.0。我正在使用 sha1-rsa 签名方法。我已经生成了 oauth 签名。我获得了 200 状态,但我没有在服务提供商中获得任何价值。我的怀疑是签名一代。如何在java中使用sha1-rsa生成oauth签名?我已经提到了正在使用的链接

  `private static KeyPair getKeyPair() throws NoSuchAlgorithmException {
    KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA");
    kpg.initialize(1024,new SecureRandom());
    return kpg.genKeyPair();
}`



public static String sign(PrivateKey privateKey) throws Exception {
    Signature privateSignature = Signature.getInstance("    ");
    privateSignature.initSign(privateKey);
    //privateSignature.update(plainText.getBytes(UTF_8));

    byte[] signature = privateSignature.sign();
    System.out.println(Base64.encodeBase64String(signature));
    return Base64.encodeBase64String(signature);
    //encodetoString(signature);
}

提前致谢,

解决方法

以下代码段生成有效签名,即使用 RSA 私钥字符串对输入数据进行签名,即根据 .pkcs8 私钥文件的内容创建私钥。这是在 Groovy 中(与 Java 一起使用,语法更改最少:

import java.security.SignatureException;
import javax.crypto.Mac;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import java.security.Signature;
import java.security.KeyFactory;
import java.security.NoSuchAlgorithmException;
import java.security.PrivateKey;
import java.security.spec.InvalidKeySpecException;
import java.security.spec.PKCS8EncodedKeySpec;


//-------- generate RSA-SHA1 signature from request data
def encryptUsingRSASHA1(String data,String key) throws 
java.security.SignatureException
{
String result
try {
// get an rsa_sha1 key from the raw key bytes
//SHA1withRSA
Signature signature = Signature.getInstance("SHA1withRSA");
signature.initSign(getPrivateKey(key));
signature.update(data.getBytes("UTF-8"));
byte[] rawRSAsigned = signature.sign();
result= rawRSAsigned.encodeBase64()

} catch (Exception e) {
    throw new SignatureException("Failed to generate Signature : " + 
e.getMessage());
}
return result
} 

//get PrivateKey from key string
def getPrivateKey(String privateKey) throws NoSuchAlgorithmException,InvalidKeySpecException {
String privateKeyPEM = privateKey.replace("-----BEGIN PRIVATE KEY-----\n","").replace("-----END PRIVATE KEY-----","").replaceAll("\n","");

byte[] privateKeyBytes = privateKeyPEM.decodeBase64();
PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(privateKeyBytes);
KeyFactory kf = KeyFactory.getInstance("RSA");
return kf.generatePrivate(keySpec);
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。