Skip to content

Zensey/GOST_28147

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 

Repository files navigation

GOST_28147

This is a simple implementation of cipher Magma defined in GOST 28147-89 in JavaScript language.

Example of usage:

var GOST_28147 = require('./index')

const _MeshingKeys_8i32 = [
    0x97c8c203, 0x6d99ee04, 0x9e7136db, 0x4a07c0c3,
    0x31a11d29, 0xeccd7d4e, 0xc0fd6a8f, 0x02be4a45
];

const _SubstitutionBoxes = [
    [  4, 10,  9,  2, 13,  8,  0, 14,  6, 11,  1, 12,  7, 15,  5,  3 ],
    [ 14, 11,  4, 12,  6, 13, 15, 10,  2,  3,  8,  1,  0,  7,  5,  9 ],
    [  5,  8,  1, 13, 10,  3,  4,  2, 14, 15, 12,  7,  6,  0,  9, 11 ],
    [  7, 13, 10,  1,  0,  8,  9, 15, 14,  4,  6, 12, 11,  2,  5,  3 ],
    [  6, 12,  7,  1,  5, 15, 13,  8,  4, 10,  9, 14,  0,  3, 11,  2 ],
    [  4, 11, 10,  0,  7,  2,  1, 13,  3,  6,  8,  5,  9, 12, 15, 14 ],
    [ 13, 11,  4,  1,  3, 15,  5,  9,  0, 10, 14,  7,  6,  8,  2, 12 ],
    [  1, 15, 13,  0,  5,  7, 10,  4,  9,  2,  3, 14,  6, 11,  8, 12 ]
]

var gamma = new Buffer([
    0x40, 0xE0, 0x3C, 0x7E,
    0xB3, 0x29, 0x86, 0x6C,
])

var msg = new Buffer([
    0x01, 0x02, 0x03, 0x04,
    0x01, 0x02, 0x03, 0x04,
])

var eng = new GOST_28147(_MeshingKeys_8i32, _SubstitutionBoxes);
eng.setGamma(gamma.readUInt32LE(0), gamma.readUInt32LE(4))

eng.execute_gammingMode(8/4, msg, true);
console.log('cypher:', msg)

eng.setGamma(gamma.readUInt32LE(0), gamma.readUInt32LE(4))
eng.execute_gammingMode(8/4, msg, true);
console.log('original:', msg)

About

Simple implementation of GOST 28147-89 with Cipher Feedback Mode

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published