in Java У меня есть следующая функция:
public static String Signature(String keyString) {
try {
SecretKey secretKey = null;
byte[] keyBytes = keyString.getBytes();
secretKey = new SecretKeySpec(keyBytes, "HmacSHA1");
Mac mac = Mac.getInstance("HmacSHA1");
mac.init(secretKey);
Locale locale = Locale.ENGLISH;
Date d = new Date();
SimpleDateFormat sdf = new SimpleDateFormat(dateformat,locale);
sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
String baseString = sdf.format(d);
date = baseString;
byte[] text = baseString.getBytes();
return new String(Base64.encodeBase64(mac.doFinal(text))).trim();
}
catch(Exception e) { return null; }
}
Я пытаюсь создать функцию в PHP, которая даст одинаковый результат для тех же «данных» и «секрета» параметры.
Я пытался использовать этот код:
$key = "ooh";
$date = '2020-01-13 04:02:01';
$gmt_date = gmdate('Y-m-d H:i:s', strtotime($date) );
$signature= base64_encode(hash_hmac('sha1', base64_encode($gmt_date), $key,true));
echo $signature;
Но я получаю разные результаты для одного и того же ввода