我使用此代码加密8字节PlainText与8字节键,但结果始终是16字节数组.
public static byte[] Encrypt(byte[] PlainText, byte[] key)
{
MemoryStream ms = new MemoryStream();
DESCryptoServiceProvider mDES = new DESCryptoServiceProvider();
mDES.Mode = CipherMode.ECB;
mDES.Key = key;
CryptoStream encStream = new CryptoStream(ms, mDES.CreateEncryptor(), CryptoStreamMode.Write);
BinaryWriter bw = new BinaryWriter(encStream);
bw.Write(PlainText);
bw.Close();
encStream.Close();
byte[] buffer = ms.ToArray();
ms.Close();
return buffer;
}
Run Code Online (Sandbox Code Playgroud)
ouptut的前8个字节是我所期望的,但其余的我不知道它是什么..这个代码有问题吗?
我目前正在完成一篇关于通过各种加密算法加密数据的论文.
我花了很多时间阅读期刊和论文,但目前还没有找到任何关于其表现复杂性的记录.
有人会想到以下算法的Big-O复杂性吗?
先感谢您; 如果你能提供一个信誉良好和可信的来源的链接,如果非常感谢.
继在C#中复制T-SQL DecryptByPassPhrase,我无法获得与MSSQL简单的加密在C#descrypt。某些列中的加密值是必需的,因为该表会定期导出到Excel和Access中,因此简单的加密足以“阻止”值,而无需开发人员去(重新)执行视图等工作。
在SQL Server 2012中:
select EncryptByPassPhrase( N'hello' , N'world' )
-- returns 0x01000000AA959FFB3A8E4B06B734051437E198C8B72000A058ACE91D617123DA102287EB
Run Code Online (Sandbox Code Playgroud)
在C#中:
byte[] buf = System.Text.Encoding.UTF8.GetBytes( "0x010000003A95FA870ED699A5F90D33C2BF01491D9132F61BA162998E96F37117AF5DA0905D51EB6FB298EC88" );
// bytes emitted from the database
var cp = new TripleDESCryptoServiceProvider();
var m = new MemoryStream(buf);
cp.Key = System.Text.Encoding.UTF8.GetBytes( "hello" ); // throws
cp.IV = System.Text.Encoding.UTF8.GetBytes( "hello" ); // throws
CryptoStream cs = new CryptoStream( m , cp.CreateDecryptor( cp.Key , cp.IV ) , CryptoStreamMode.Read );
StreamReader reader = new StreamReader( cs );
string plainText = reader.ReadToEnd();
Run Code Online (Sandbox Code Playgroud)
工作的C#代码应该是什么样的? …
我正在做DES加密的任务,我似乎无法转换字符串,更不用说将字符串转换为bitset.谁能告诉我如何将单个字符串转换为C++中的bitset?
任何人都可以帮助(或指出一些例子)关于如何使用python加密文件?我必须使用以下参数来加密文件:
block size=8
iv=qwertyui12345678
method=des3_cbc
Run Code Online (Sandbox Code Playgroud)
我也不知道是什么iv
意思
请帮忙.提前致谢.
我正在学习密码学,我需要开发 Java 或 C 代码来破解 DES(数据加密标准)。我知道 DES 中使用的算法,但我不知道我应该如何使用 Java 或 C 进行编码。我听说过 Java 密码体系结构,但我不确定如何使用它?有人可以为我提供一个简短的教程吗?
谢谢
我正在尝试编写可以远程更改另一个盒子上的 RealVNC 密码的 C# 应用程序。
目前有效的是,我可以从已经更改的框中提取密码,将其存储为十六进制字符串,然后将其发送到另一个框,然后以这种方式更改密码,但我需要能够更改密码或即时随机化。
我在创建正确的二进制文件以放置在注册表中时遇到问题。
我知道 VNC 密钥:
byte[] Key = { 23, 82, 107, 6, 35, 78, 88, 7 };
Run Code Online (Sandbox Code Playgroud)
所以使用上面的密钥并传递“1234”作为密码使用以下代码进行加密:
public static byte[] EncryptTextToMemory(string Data, byte[] Key)
{
try
{
MemoryStream mStream = new MemoryStream()
DESCryptoServiceProvider desProvider = new DESCryptoServiceProvider();
desProvider.Mode = CipherMode.ECB;
desProvider.Key = Key;
CryptoStream cStream = new CryptoStream(mStream,
desProvider.CreateEncryptor(),
CryptoStreamMode.Write);
byte[] toEncrypt = new ASCIIEncoding().GetBytes(Data);
cStream.Write(toEncrypt, 0, toEncrypt.Length);
cStream.FlushFinalBlock();
byte[] ret = mStream.ToArray();
cStream.Close();
mStream.Close();
return ret;
}
catch (CryptographicException ex)
{
MessageBox.Show("A …
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 16 字节密钥在 DES 中加密动态长度的文本,但是密钥和文本的块大小存在问题,我正在使用 openssl 库进行 DES 加密。如何使用长度为 16 字节的密钥。
这是我的例子:
char * Encrypt( char Key, char *Msg, int size) {
static char* Res;
DES_cblock Key2;
DES_key_schedule schedule;
Res = ( char * ) malloc( size );
memcpy(Key2, Key, 8);
DES_set_odd_parity( &Key2 );
DES_set_key_checked( &Key2, &schedule );
unsigned char buf[9];
buf[8] = 0;
DES_ecb_encrypt(( DES_cblock ) &Msg, ( DES_cblock ) &buf, &schedule, DES_ENCRYPT );
memcpy(Res, buf, sizeof(buf));
return (Res);
}
int main(int argc, char const *argv[]) {
char key[] …
Run Code Online (Sandbox Code Playgroud) 预期结果:
该程序采用哈希密码作为输入; 这被传递给decrypt函数.该函数迭代每个混合大小写的n字母组合,对每个这样的字符串进行散列.如果找到与输入匹配的内容,则会打印出未散列的密码; 否则,它会退出.
实际结果:
函数仅针对当前迭代中的最后一个字母迭代每个混合大小写字母.
问题描述:
我正在尝试用Python实现一个简单的暴力DES加密密码破解程序.我使用了很多for循环实现了4个字符的密码实现,但现在我想使用递归来重构一段长度.如何迭代每个字符组合,从1-char组合到4个字符的字符串组合?
我想用这一行:
password[i] = string.ascii_letters[j]
Run Code Online (Sandbox Code Playgroud)
但我得到这个错误:
TypeError: 'str' object does not support item assignment
Run Code Online (Sandbox Code Playgroud)
代码段:
def decrypt(encryptedText):
# reference global variable
global password
# check curr password guess length
pwdlen = len(password)
if pwdlen >= 4:
print("Password is longer than 4 characters, exiting...")
exit(2)
# debug lines
print("password is {}".format(password))
print("length: {}".format(pwdlen))
time.sleep(2)
# first two characters is salt
salt = encryptedText[:2]
# Check hashes for every combination of strings and compare them …
Run Code Online (Sandbox Code Playgroud) 我想使用此密钥 C6864E7696C686 和 DES 算法加密挑战(如 162236fe0bec620827958c8fdf7e4bc7 )。
这是我的代码:
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.xml.bind.DatatypeConverter;
import javax.crypto.spec.DESKeySpec;
def data = prev.getResponseData();
String challenge = javax.xml.bind.DatatypeConverter.printHexBinary(data);
final String strPassPhrase = "C6864E7696C686";
String param = challenge;
System.out.println("Text : " + param);
SecretKeyFactory factory = SecretKeyFactory.getInstance("DES");
SecretKey key = factory.generateSecret(new DESKeySpec(hexStringToByteArray(strPassPhrase)));
Cipher cipher = Cipher.getInstance("DES");
cipher.init(Cipher.ENCRYPT_MODE, key);
String str = DatatypeConverter.printBase64Binary(cipher.doFinal(param.getBytes()));
System.out.println("Text Encryted : " + str);
cipher.init(Cipher.DECRYPT_MODE, key);
String str2 = new String(cipher.doFinal(DatatypeConverter.parseBase64Binary(str)));
System.out.println("Text Decryted : " + str2);
Run Code Online (Sandbox Code Playgroud)
但我得到这个例外:
java.security.InvalidKeyException: …
Run Code Online (Sandbox Code Playgroud) des ×10
encryption ×5
c# ×2
c++ ×2
cryptography ×2
python ×2
.net-2.0 ×1
big-o ×1
crypt ×1
cryptostream ×1
exception ×1
java ×1
recursion ×1
rsa ×1
sql-server ×1
string ×1