взять функцию из java и написать ту же функцию в php, но не работает - PullRequest
0 голосов
/ 13 января 2020

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;

Но я получаю разные результаты для одного и того же ввода

...