function encrypt_3DES($message, $key){
// Se establece un IV por defecto
$bytes = array(0,0,0,0,0,0,0,0); //byte [] IV = {0, 0, 0, 0, 0, 0, 0, 0}
$iv = implode(array_map("chr", $bytes)); //PHP 4 >= 4.0.2
// Se cifra
$ciphertext = mcrypt_encrypt(MCRYPT_3DES, $key, $message, MCRYPT_MODE_CBC, $iv); //PHP 4 >= 4.0.2
return $ciphertext;
}
У меня есть этот код в php, и мне нужно перевести его на классический asp. Этот код используется в новой платежной системе, и я не знаю, с чего начать.
Кто-нибудь может мне помочь?
Я нашел решение в javascript, используя CryptoJS. Вы можете использовать его для своего классического кода asp:
<script src="http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/tripledes.js"></script>
<script src="http://crypto-js.googlecode.com/svn/tags/3.1.2/build/components/pad-nopadding.js"></script>
<script>
function padString(source) {
var paddingChar = '\0';
var size = 8;
var x = source.length % size;
var padLength = size - x;
for (var i = 0; i < padLength; i++) source += paddingChar;
return source;
}
var key = CryptoJS.enc.Base64.parse('Mk9m98IfEblmPfrpsawt7BmxObt98Jev');
var iv = CryptoJS.enc.Hex.parse('0000000000000000');
var message = "1447841550";
var padMsg = padString(message);
var encrypted = CryptoJS.TripleDES.encrypt(padMsg, key, { iv: iv, padding: CryptoJS.pad.NoPadding, mode: CryptoJS.mode.CBC});
alert(encrypted);
</script>
encrypted = n6lp0I1w5FxLQHskKMn4sw ==
Это тот же результат, что и на платформе Redsys PHP.
Других решений пока нет …