【问题标题】:Converting 3DES code php to ASP将 3DES 代码 php 转换为 ASP
【发布时间】:2015-11-05 11:18:52
【问题描述】:
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 classic。这是用于新卡支付系统的代码,我不知道如何从这里开始。 谁能帮帮我?

【问题讨论】:

  • 为了能够转换它,我们还需要定义 mcrypt_encrypt() 函数,但是您要求在 Classic ASP 中重新创建 Mcrypt 库,我不建议这样做,而是找到合适的可用于 Classic ASP 的加密函数。
  • 此代码是新 Redsys 平台的一部分,用于编写 MerchantCode。到目前为止,只检测到一个要解决的库:code.google.com/p/crypto-js 所以我怀疑 PHP 代码还有其他条件
  • 我尝试了 crypto-js 库,它似乎工作正常。现在我需要做测试,看看加密是否正确

标签: php asp-classic 3des


【解决方案1】:

我在 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>

加密 = n6lp0I1w5FxLQHskKMn4sw==

是和Redsys PHP平台一样的结果。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-30
    • 1970-01-01
    • 1970-01-01
    • 2020-06-23
    • 2011-03-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多