我正在寻找一种非常简单的crypt/decrypt方法.我将始终使用相同的静态密钥.我知道这种方法的风险.目前我正在使用以下代码,但在加密和删除相同的字符串后,它不会生成相同的结果(字符串中间有一些垃圾).
public static string Crypt(this string text)
{
string result = null;
if (!String.IsNullOrEmpty(text))
{
byte[] plaintextBytes = Encoding.Unicode.GetBytes(text);
SymmetricAlgorithm symmetricAlgorithm = DES.Create();
symmetricAlgorithm.Key = new byte[8] {1, 2, 3, 4, 5, 6, 7, 8};
using (MemoryStream memoryStream = new MemoryStream())
{
using (CryptoStream cryptoStream = new CryptoStream(memoryStream, symmetricAlgorithm.CreateEncryptor(), CryptoStreamMode.Write))
{
cryptoStream.Write(plaintextBytes, 0, plaintextBytes.Length);
}
result = Encoding.Unicode.GetString(memoryStream.ToArray());
}
}
return result;
}
public static string Decrypt(this string text)
{
string result = null;
if (!String.IsNullOrEmpty(text))
{
byte[] …
Run Code Online (Sandbox Code Playgroud) 我使用以下代码将密钥转换为字节
SecretKey key = KeyGenerator.getInstance("DES").generateKey();
byte[] bkey=key.getEncoded();
Run Code Online (Sandbox Code Playgroud)
现在如何从中获取密钥bkey
?我试过了:
SecretKeySpec secretkey = new SecretKeySpec(bkey,"DES");
SecretKeyFactory sfkey = SecretKeyFactory.getInstance("DES");
SecretKey skey = sfkey.generateSecret(secretkey);
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
Error during Exception java.security.spec.InvalidKeySpecException: Inappropriate key specification
Run Code Online (Sandbox Code Playgroud) 我正在使用基于密码的加密.我最初的想法是使用AES来加密包含密码的文件.原来基于密码的加密不支持AES.它使用DES.AFAIK des不安全.PBEWithMD5AndDES是否足够安全以推送我的数据,还是应该寻找其他实现?
有没有人有任何关于如何将序列化数据加密到文件然后使用DES读回来的例子?
我已经编写了一些不起作用的代码,但我宁愿看到新的尝试,而不是追求我的代码.
编辑:对不起,忘了提我需要一个使用XmlSerializer.Serialize/Deserialize的例子.
我正在修读一门关于密码学的课程,我被困在一项任务上.说明如下:
明文plain6.txt已使用DES加密加密6.dat,使用64位密钥作为8个字符的字符串给出(64位,每8位被忽略),所有字符都是字母(小写或更高 - case)和数字(0到9).
要完成分配,请在23.59年2月12日之前将加密密钥发送给我.
注意:我希望得到一个8字节(64位)的密钥.每个字节应该与我的密钥中的相应字节一致,除了在DES中没有使用的最低有效位,因此可以是任意的.
这是我在Python中第一次尝试的代码:
import time
from Crypto.Cipher import DES
class BreakDES(object):
def __init__(self, file, passwordLength = 8, testLength = 8):
self.file = file
self.passwordLength = passwordLength
self.testLength = testLength
self.EncryptedFile = open(file + '.des')
self.DecryptedFile = open(file + '.txt')
self.encryptedChunk = self.EncryptedFile.read(self.testLength)
self.decryptedChunk = self.DecryptedFile.read(self.testLength)
self.start = time.time()
self.counter = 0
self.chars = range(48, 58) + range(65, 91) + range(97, 123)
self.key = False
self.broken = False
self.testPasswords(passwordLength, 0, '')
if not self.broken:
print "Password not …
Run Code Online (Sandbox Code Playgroud) 我以前使用过很好的公共域C++ DES实现,但是现在我需要一些简单,基本,快速的嵌入式系统加密.
它不需要是牢不可破的,但它确实需要阻止随意的黑客(即,没有什么可以用于金钱或身份盗窃,但其他个人信息转移到存储卡上可能会丢失或落入坏人之手).
由于此处理器的内存有限,我更喜欢能够以离散块(512字节或更少)编码的内容.
该项目不是开源的,也不会使用库,我知道这些库会进一步限制选项 - 公共域名最好,但BSD/apache/etc可能是可以接受的......
我犹豫不决自己(就像每个人一样).
-亚当
我已经编写了一个DES实现作为练习,我现在想知道今天是否使用(三重)DES.
我已经读过使用它的银行卡,但我找不到任何可靠的来源.
我正在尝试使用我的Android应用程序验证DESFire卡.我使用此链接中的示例来解析我从卡中获得的字节.为此,我在解密中排除了填充(在下面说明),因为DESFire文档指出了它.此外,如果我不这样做,解密将返回7个字节,输入8个字节.以下是我使用的DES和TripleDES解密函数:
public static byte[] TripleDES_Decrypt(byte[] data,byte[][] keys)
{
int i;
byte[] tmp = new byte[data.length];
byte[] bloc = new byte[8];
K = generateSubKeys(keys[0]);
K1 = generateSubKeys(keys[1]);
K2 = generateSubKeys(keys[2]);
for (i = 0; i < data.length; i++) {
if (i > 0 && i % 8 == 0) {
bloc = encrypt64Bloc(bloc,K2, true);
bloc = encrypt64Bloc(bloc,K1, false);
bloc = encrypt64Bloc(bloc,K, true);
System.arraycopy(bloc, 0, tmp, i - 8, bloc.length);
}
if (i < data.length)
bloc[i % 8] = data[i]; …
Run Code Online (Sandbox Code Playgroud) des ×10
encryption ×5
java ×4
aes ×2
blowfish ×2
c# ×2
3des ×1
android ×1
brute-force ×1
byte ×1
cryptography ×1
mifare ×1
nfc ×1
publicdomain ×1
python ×1
rsa ×1
security ×1
tripledes ×1