标签: encryption

加密:按位反转和位移?

我正在尝试反转 XOR 加密。我有加密代码:

// Walk the 16 nibbles in the 64 bit long long, selecting the corresponding key digit
// and XORing it into the result.
unsigned long long result = 0;
for( i=0; i<16; i++ )
{
    int n = 4*(i % keyLen);
    int k = (key & (0xF << n)) >> n;
    result |= value&(0xF << 4*i) ^ (k<<4*i);
}
Run Code Online (Sandbox Code Playgroud)

第一行没问题。

第二个和第三个不是。我的 3 个问题是:

  1. 我想我可以反转位移位就可以了,对吗?
  2. 但是如何按位反转 & 呢?那么#2 是如何反转的呢?
  3. 因此,如果#1 的答案是肯定的,并且我知道如何执行#2,那么我可以这样做并能够解密“是”吗?

encryption xor

0
推荐指数
1
解决办法
1万
查看次数

Feistel 和非 Feistel 密码

在谷歌搜索时,我只能找到 Feistel 密码,而没有找到任何有关非 Feistel 密码的相关信息。有人能给我推荐一些好的非feistel密码吗?

是的,这是家庭作业。

encryption algorithm cryptography

0
推荐指数
1
解决办法
9815
查看次数

永久锁定文件

我正在 VS2010 上使用 C# 开发文件锁定器/解锁器应用程序。我想要的是使用我的应用程序使用密码锁定文件,然后随时解锁。

事实上,我使用以下代码来锁定文件,但仅当应用程序仍在运行时才会锁定文件;当我关闭应用程序时,文件被解锁。

using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Configuration;
using System.Windows.Forms;

namespace LockFile
{
    public enum LockStatus
    {
        Unlocked,
        Locked
    }

    public class LockFilePresenter
    {
        private ILockFileView view;
        private string file2Lock = string.Empty;
        private FileStream fileLockStream = null;

        public LockFilePresenter(ILockFileView view)
        {
            this.view = view;
        }

        internal void LockFile()
        {
            if (string.IsNullOrEmpty(file2Lock) || !File.Exists(file2Lock))
            {
                view.ShowMessage("Please select a path to lock.");
                return;
            }

            if (fileLockStream != null)
            {
                view.ShowMessage("The path is already locked."); …
Run Code Online (Sandbox Code Playgroud)

c# encryption file-locking filestream

0
推荐指数
1
解决办法
1746
查看次数

8192 位异或加密?

如果我有一个包含 1024 个字符的字符串和一个简单的异或算法,它仍然很容易被破解吗?

const unsigned char Key[1024] = {0x.........};

void EncodeBuffer(unsigned char Buffer[],unsigned int Size) {
    unsigned int i = 0,c = 0;
    while (i < Size) {
         while(c < 1024)
              Buffer[i] ^= Key[c++];
         i++;
         c = 0;
    }
}
Run Code Online (Sandbox Code Playgroud)

c c++ encryption

0
推荐指数
1
解决办法
686
查看次数

为什么RSA加密和解密的时间取决于密钥大小而不是输入长度?

我读了一些关于 RSA 加密的白皮书。我找到这个说法。但我不明白为什么?声明是RSA加密和解密的时间取决于密钥大小,但不取决于输入数据的大小和内容,如果这个声明正确意味着我们加密1000字节,同时加密和解密10000字节?

encryption cryptography rsa

0
推荐指数
1
解决办法
1759
查看次数

在 Java 中使用 AES-256-ECB 解密

我已经使用AES-256-ECB加密了 PHP 中的字符串。

$sString   = "test"
$sEncryptionMethod = "AES-256-ECB";
$sEncryptionKey = "mysecretkey";

openssl_encrypt($sString, $sEncryptionMethod, $sEncryptionKey)
Run Code Online (Sandbox Code Playgroud)

我想使用 Java/Scala 解密相同的文件吗?

 String secret = "mysecretkey";
 SecretKeySpec skeySpec = new SecretKeySpec(encKey.getBytes("UTF-8"), "AES");
 byte[] decodedValue = Base64.getDecoder.decode(token);

 Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5PADDING");
 int decryptMode = Cipher.DECRYPT_MODE;
 cipher.init(decryptMode, skeySpec);
 new String(cipher.doFinal(decodedValue));
Run Code Online (Sandbox Code Playgroud)

我看到以下错误?我们如何使用Java解密相同的内容?注意:(PHP 中的解密按预期工作)但我想在 Java 中执行此操作

Given final block not properly padded. Such issues can arise if a bad key is used during decryption.
Run Code Online (Sandbox Code Playgroud)

php java encryption aes

0
推荐指数
1
解决办法
97
查看次数

srand 是加密垫的可靠来源吗?

我希望加密音频软件插件上的许可证密钥。许可证密钥完整性的最大风险是小型破解者反编译代码并寻找加密密钥。我的解决方案是在代码中存储任意数字并将其提供给一种算法,该算法将混淆加密密钥,同时仍然允许我在项目之间区分密钥(我是自由职业者)。

我的问题是 - 每次播种 C++ 随机数生成器都会创建相同的伪随机加密密钥,还是在运行、库等之间会有所不同。如果它在操作系统之间有所不同,那很好,我只需要它在同一台计算机上的 SDK 和托管软件之间没有区别。

c++ random encryption license-key encryption-symmetric

0
推荐指数
1
解决办法
77
查看次数

我需要使用 java gwt 从客户端加密密码,但导入 java.security 不可用

当我尝试在 java gwt 中编译时,它显示以下问题

  1. 导入 java.security 无法解析
  2. MessageDigest 无法解析为类型
  3. NoSuchAlgorithmException 无法解析为类型

注意:使用 gwt 2.0 java 6 (jre 1.6) 的版本也在 1.8 中尝试过

public static String EncryptPassowrd(String password)
    {
        String encryptedPassword = "";
        byte[] actualBytes = password.toString().getBytes();
        byte[] newbytes = new byte[actualBytes.length * 2];
        for (int i = 0; i < actualBytes.length; i++)
        {
            newbytes[2 * i] = actualBytes[i];
            newbytes[2 * i + 1] = 0;
        }
        try
        {
            MessageDigest md = MessageDigest.getInstance("SHA-1");
            md.reset();
            md.update(newbytes);
            byte[] encryptedbytes = md.digest();
            for (int i …
Run Code Online (Sandbox Code Playgroud)

java encryption gwt java.security

0
推荐指数
1
解决办法
102
查看次数

C++ 中的异或加密,警告“使用带二进制位运算符的有符号整数操作数”

我正在学习 C++ 中的简单 XOR 加密算法。

下一个代码工作正常:

void test(int8_t* data, const int data_length) {
    const uint8_t key = 123;

    for (int index = 0; index < data_length; index++)
        data[index] = data[index] ^ key;
}
Run Code Online (Sandbox Code Playgroud)

我得到的数据是有符号的,因此类型为int8_t

问题是编译器显示了下一个警告:

“使用带二进制位运算符的有符号整数操作数”

在执行 XOR 操作时,我可以通过使用uint8_t转换数据来发出警告,但我不知道其中的含义。我已经做了一些测试并且似乎没有问题,但是我很困惑,因为数据可以包含有符号值,所以我不确定通过转换它是否我弄乱了数据。

即使数据可以包含负值,转换为 uint8_t 是否正确?还是我应该忽略警告?

c++ encryption xor compiler-warnings

0
推荐指数
1
解决办法
136
查看次数

如何识别使用的是哪种编码算法?

我有一个纯文本及其编码的字符串,我想知道使用哪种编码器/算法对字符串进行编码。

纯文本:hello world
编码文本:3MZ7hIAnvqtIqnxZJyEi+dOuJ1/myCfsbYOCsYKkZto=

我知道它与 base64 有关,但我尝试过它对我不起作用。

编辑:我有一个像exe这样的记事本,我在里面写了“hello world”然后保存了它。当我在普通记事本中打开文本文件时,它会显示“3MZ7hIAnvqtIqnxZJyEi+dOuJ1/myCfsbYOCsYKkZto=”。当我在 exe(我写的地方)中打开同一个文件时,它显示纯文本“hello world”。

encryption algorithm base64 encode character-encoding

0
推荐指数
1
解决办法
273
查看次数