2013-02-25 2 views
0

У меня есть метод ruby ​​для создания подписи для вызова REST API.Apex base encoding and openssl

private static String sign_data(String str, String api_secret, bool cgi_escape) 
{ 
String r = Base64.encode64(OpenSSL::HMAC.digest(OpenSSL::Digest::Digest.new('sha1'), api_secret, str)).replace('\n',''); 
cgi_escape ? CGI.escape(r) : r 
return r 
} 

Может ли кто-нибудь помочь мне получить эквивалентный код вершины? я попробовал написать ниже код вершины, но не смог добиться успеха.

частных статических строк sign_data (String ул, String api_secret, BOOL cgi_escape) {
Строка г = EncodingUtil.base64Encode ((OpenSSL :: Digest :: SHA1.new, api_secret, ул)). Заменить ('\ п», ''); return r;
}

+0

Добавлено в ответ, чтобы помочь другим. благодаря – Muzaffer

ответ

1

ИСПРАВЛЕНО: Используйте решение ниже

private static String sign_data(String str, String api_secret) 

{

String algorithmName = 'HmacSHA1'; 
Blob hmacData = Crypto.generateMac(algorithmName, Blob.valueOf(str),  Blob.valueOf(api_secret)); 
return EncodingUtil.base64Encode(hmacData); 

}