我有一种使用DES加密的C#加密方法。我需要在我创建的node.js应用程序接口中解密该值。我已经设法在api中重新创建了大部分的解密方法,但是当我传入要解密的秘密和值时,我得到了一个不同的结果。
Encryption.cs
public static string Encrypt(string toEncrypt, string key)
{
var des = new DESCryptoServiceProvider();
var ms = new MemoryStream();
des.Key = HashKey(key, des.KeySize / 8);
为什么const_DES_cblock input最多只能接受8个字母。例如,
const_DES_cblock input = "hehehehe"; // is fine
const_DES_cblock input = "hehehehehehehe"; // is giving warning: warning: initializer-string for array of chars is too long [enabled by default]
第一行代码可以很好地加密和解密。但是第二个只加密和解密前8个字母。什么是绕过它的方法?
我试图使用KeyStore加载的des密钥加密,我得到:
Exception in thread "main" java.security.InvalidKeyException: No installed provider supports this key: sun.security.pkcs11.P11Key$P11SecretKey
at javax.crypto.Cipher.chooseProvider(Cipher.java:878)
at javax.crypto.Cipher.init(Cipher.java:1213)
at java
我有一个非常奇怪的情况。基本上,我有使用由以下创建的解密器的代码:
Dim des3 As New TripleDESCryptoServiceProvider
des3.Mode = CipherMode.CBC
Return des3.CreateDecryptor(_encKey, _initVec)
_encKey和_initVec是硬编码的。我通过调用它来使用它:
Dim res() As Byte = decrypt(Convert.FromBase64String(_data))
m_transformDec.TransformFinalBlock(res, 0, res.Len
我正在尝试使用DES加密/解密。但是,解密不起作用。我一直收到错误:无法读取null的属性'charCodeAt‘
解密来自
我使用下面的代码进行编码:
var decodedKey = decodeBase64(key);
var em = urlEncode(encrypt(decodedKey, value));
然后我尝试使用这个函数来解密:
var emD = urlDecode(decrypt(decodedKey, em))
使用
function encrypt(key, message) {
var ciphertext = des(key, mes
我正在处理标准的3 3DES 128位,用于加密和解密字符串。它在两个不同的环境中实现:经典ASP (VB6)和.Net。
我认为3 3DES是标准的,但是我不能使它在这两者之间兼容(capicom和.Net)。谷歌一遍后,我意识到capicom有一些自己的定制魔法。
据我所知,3 3DES需要两个指定的128位(8字节)密钥(密码)和8字节的"IV"。所以,我找不到可以在capicom中指定"IV“的8个字节的地方,因此,我怀疑这是造成差异的原因。
.Net System.Security.Cryptography
Dim m_des As New TripleDE