Articles of 密码学

将密码过程从java转换为nodejs(Blowfish)

我们正在将一个用java编写的旧中间件迁移到我们的服务器上,我们想把它写在nodejs中,我们不知道如何翻译一些函数: 有了第一个函数,我们需要在nodejs中find一个Cipher类的解决scheme,我们还没有find解决scheme,是否有任何“simmetric”或类似的包,我们可以在节点中使用? public static String encryptBlowFish(String cleartext, String key) throws NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException, UnsupportedEncodingException { String encBlowFish = ""; SecretKeySpec skeySpec = getGenerateKey(key); Cipher cipher = Cipher.getInstance("Blowfish/ECB/PKCS5Padding"); cipher.init(1, skeySpec); byte[] raw = cipher.doFinal(cleartext.getBytes("UTF8")); encBlowFish = new Base64Encoder().encode(raw); encBlowFish = URLEncoder.encode(encBlowFish, "UTF8"); encBlowFish = specialChars(encBlowFish); return encBlowFish; } 对于第二种方法,它几乎是相同的,我们需要在节点中的解决scheme来模拟此行为: private static SecretKeySpec getGenerateKey(String key) […]

Angular CryptoJs Encryption在Node JS CryptoJS中没有解密

这是我的Anguarjs守则 $httpProvider.defaults.headers.common['key'] = CryptoJS.AES.encrypt('<datatoencrypt>', '<key let says xyx>=', { mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7, keySize: '256 / 32' }); 节点JS代码解密使用,algorithm如aes-256-cbc和key一样angular。 app.all('*', function (req, res, next) { var headers = JSON.parse(JSON.stringify(req.headers)); var decipher = crypto.createDecipher(algorithm, key); decipher.setAutoPadding(true); var dec = decipher.update(headers.key, 'hex', 'utf8'); dec += decipher.final('utf8'); if (dec != "<datatoencrypt>") { //do something next(); } else { […]

Bash脚本和Javascript的标准哈希algorithm?

我有一个目录在我的Mac中有以下名称的文件 – Directory images – 1.jpg 2.jpg 3.jpg 4.jpg 我想写一个bash脚本来重命名这个文件夹中的所有文件,通过使用一些标准的散列algorithm,以便目录看起来像这样 – 让我们假设散列键是common_key =“mykey123” Directory images – U2FsdGVk.jpg X1O9Z6e.jpg ECdjybF.jpg U2FsdGVajpg 我怎样才能做到这一点? Furthur,我正在写Nodejs(基本上是JavaScript)的一些代码,我希望从这四个中挑选一个随机图像并显示它,所以我正在使用 – var random_image_number = Math.floor((Math.random()*4)+1); // Picking a random number out of 4 假设random_image是3.现在我需要显示图像编号3.如果我没有哈希的图像名称,我通常会这样做 – <img src="/images/" + random_image_number + ".jpg" /> 但是现在我需要在生成的随机数上再次使用标准的encryptionalgorithm,然后才能显示图像。 (我一直强调“标准”,因为相同的哈希algorithm必须在JS端以及在bash脚本中工作,并产生相同的结果) 所以我需要这样的事情 var random_image_number = Math.floor((Math.random()*4)+1); // Picking a random […]

在一次成功的encryption和解密之后,Nodejs Crypto解密失败

我在nodejs上有一个奇怪的场景,其中crypto在我加载节点服务器时只对文本进行encryption和解密。 第二次尝试后,它encryption文本罚款,但无法解密的文字,第二次尝试。 这是我的代码: function Encrypt(mytext) { var cipher = crypto.createCipher('aes-256-cbc','fa97be5d286a67114cf74acf46d179725581d562'); var crypted = cipher.update(mytext,'utf8','hex'); crypted += cipher.final('hex'); } function Decipher(mytext) { var decipher = crypto.createDecipher('aes-256- cbc','fa97be5d286a67114cf74acf46d179725581d562'); var dec = decipher.update(mytext,'hex','utf8'); dec += decipher.final('utf8'); } 在nodejs服务器加载的时候,这个工作正常,完全encryption和解密数据,第二次使用这个函数在其他地方使用不同的文本或者密钥时,它不能解密文本。 即时puzzeled。

如何在NodeJS中创buildencryption和解密函数?

我需要在我的NodeJS应用程序中创buildencryption和解密function。 任何人都可以帮助,并指出我在正确的方向吗?

在Node.js中相当于Java PBEWITHSHA1ANDDESEDEencryption?

我有inheritance的Java Web应用程序,我应该将其转换为node.js. 其中一部分是数据的encryption。 在Java中,它就像附加代码一样完成。 我会怎么做在节点使用encryption? 密码学方面根本不强,对不起,如果这是真正的基本问题,并提前感谢。 private final String ALGORITHM = "PBEWITHSHA1ANDDESEDE"; private final int ITERATION_COUNT = 20; private final byte[] SALT = { (byte)0xc7, (byte)0x73, (byte)0x21, (byte)0x8c, (byte)0x7e, (byte)0xc8, (byte)0xee, (byte)0x99 }; 然后… PBEKeySpec pbeKeySpec = new PBEKeySpec("password".toCharArray()); SecretKeyFactory keyFac = SecretKeyFactory.getInstance(ALGORITHM); SecretKey pbeKey = keyFac.generateSecret(pbeKeySpec); PBEParameterSpec pbeParamSpec = new PBEParameterSpec(SALT, ITERATION_COUNT); // Create […]

有关AES256 CBC的Node.js实现的问题

让我开始说我对密码学非常陌生。 我试图在Node.js中实现密码块链模式 。 我的问题是,在没有解密的encryption之后,它停止工作一个解密函数调用。 这是我的代码: var crypto = require('crypto'); var encryptionMethod = 'aes-256-cbc'; var vector = new Buffer([0xF1, 0x4C, 0xB6, 0xBD, 0x82, 0x93, 0x3C, 0x97, 0x6A, 0x4B, 0x4A, 0xD2, 0xAD, 0xD5, 0xA8, 0x6D]); var key = new Buffer([59, 92, 128, 239, 136, 26, 19, 26, 226, 234, 53, 71, 157, 113, 209, 96, 111, 83, […]

使用ECDH和nodejsencryption解密秘密

这是nodejs文档示例: const crypto = require('crypto'); const alice = crypto.createECDH('secp256k1'); const bob = crypto.createECDH('secp256k1'); // Note: This is a shortcut way to specify one of Alice's previous private // keys. It would be unwise to use such a predictable private key in a real // application. alice.setPrivateKey( crypto.createHash('sha256').update('alice', 'utf8').digest() ); // Bob uses a newly generated […]

使用Node.js / crypto生成ECDSA签名

我有使用jsrsasign和JWK格式的键生成ECDSA签名的连接(rs)签名的代码: const sig = new Signature({ alg: 'SHA256withECDSA' }); sig.init(KEYUTIL.getKey(key)); sig.updateHex(dataBuffer.toString('hex')); const asn1hexSig = sig.sign(); const concatSig = ECDSA.asn1SigToConcatSig(asn1hexSig); return new Buffer(concatSig, 'hex'); 似乎工作。 我也有使用SubtleCrypto来实现同样的事情的代码: importEcdsaKey(key, 'sign') // importKey JWK -> raw .then((privateKey) => subtle.sign( { name: 'ECDSA', hash: {name: 'SHA-256'} }, privateKey, dataBuffer )) 这两个都返回128字节的缓冲区; 他们交叉validation(即我可以validationjsrsasign签名与SubtleCrypto ,反之亦然)。 但是,当我在Node.js crypto模块中使用Sign类时,我似乎得到了一些完全不同的东西。 key = require('jwk-to-pem')(key, {'private': true}); […]

NodeJS aes解密不起作用

我使用AES的在线工具进行encrpyt。 我正在使用我的模块进行解密。 但是我得到不一样的结果。 为什么? 我用这些工具之一进行encryption: https://www.browserling.com/tools/aes-encrypt https://www.tools4noobs.com/online_tools/encrypt/ 这是我提供的数据: 这是encrpyt的文本: Hello World 这是密码: 12345 这是该工具的结果: U2FsdGVkX19HLG+YDMe3kYl+MYwEMlnC5mK78s3rZZg= 现在我尝试使用节点来解密它,并且不给我相同的结果。 但一切工作welll var crypto = require('crypto'), algorithm = 'aes-128-ctr', password = '12345'; module.exports.decrypt=function(text){ var decipher = crypto.createDecipher(algorithm,password) var dec = decipher.update(text,'base64','utf8') dec += decipher.final('utf8'); return dec; } text=module.exports.decrypt('U2FsdGVkX1+OOp0KE3lv6qcKQeS/JDFPF8YhgdU131o=') text 我试图改为AES-192,并得到同样的问题。 更新:(基于zaph响应) 这是我在这里input的新数据: https : //www.tools4noobs.com/online_tools/encrypt/ 键:0123456789abcdef(16字节)Rijndael-128。 模式:CBC。 编码:hex。 这是结果:8b25e846b6a2d52ad87f38f8134906c3 我无法解密它。 […]