Алгоритм ISO 9797-1 1 [CBC-MAC] в C#

** РЕДАКТИРОВАНИЕ: Посмотрите ответ Jason Bunting. Этот ответ на самом деле показывает, что способ ниже среднего объединить в цепочку многочисленный звонит, ни один-вызов с предварительными установками для некоторых аргументов. Если этот ответ на самом деле помогает с подобной проблемой, несомненно, необходимо будет использовать, применяются и звонят, как Jason рекомендует вместо неясного способа использовать оценку, которую я продумал. **

Хорошо... Ваш на самом деле запишет "неопределенный" много в этом..., но это должно быть близко к тому, что Вы хотите:

function out(a, b) {
    document.write(a + " " + b);
}

function getArgString( args, start ) {
    var argStr = "";
    for( var i = start; i < args.length; i++ ) {
        if( argStr != "" ) {
            argStr = argStr + ", ";
        }
        argStr = argStr + "arguments[" + i + "]"
    }
    return argStr;
}

function setter(func) {
    var argStr = getArgString( arguments, 1 );
    eval( "func( " + argStr + ");" );
    var newSettter = function() {
        var argStr = getArgString( arguments, 0 );
        if( argStr == "" ) {
            argStr = "func";
        } else {
            argStr = "func, " + argStr;
        }
        return eval( "setter( " + argStr + ");" );
    }
    return newSettter;
}

setter(out, "hello")("world");
setter(out, "hello", "world")();

я, вероятно, переместил бы код в getArgString в саму функцию метода set, хотя... немного более безопасный, так как я использовал 'оценку

10
задан Svante 4 July 2009 в 09:48
поделиться

3 ответа

Также имеется JSpec

JSpec - чрезвычайно маленькая, но очень мощная среда тестирования. Используя собственную грамматику и препроцессор, JSpec может работать так, как никакая другая среда тестирования JavaScript. Это включает в себя множество полезных сокращенных литералов, очень интуитивно понятный / читаемый синтаксис, а также не загрязняет прототипы основных объектов.

JSpec также можно запускать различными способами, например, через терминал с поддержкой Rhino, через браузеры, использующие Модули форматирования DOM или консоли или, наконец, с помощью среды тестирования Ruby JavaScript, которая запускает браузеры в фоновом режиме, отправляя отчеты на терминал. JCEMac.java

Также ознакомьтесь с jPos:

JCESecurityModule.java

и их собственной реализацией алгоритма MAC для розничной торговли:

retail-mac-contributed-by-vsalaman.zip

2
ответ дан 4 December 2019 в 04:37
поделиться

Я почти уверен (IIRC), что вам нужно в конце вызвать TransformFinalBlock (для каждого шифратора).

0
ответ дан 4 December 2019 в 04:37
поделиться

Не могу ответить на ваш конкретный терминал, но я использую это для тестирования MAC.

public static byte[] GenerateMAC(byte[] key, byte[] data)
{
    using (MACTripleDES mac = new MACTripleDES(key))
        return mac.ComputeHash(data);
}
0
ответ дан 4 December 2019 в 04:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: