小编Bob*_*own的帖子

ECB 模式下的 RSA 加密

我的代码有问题。

我想做的是使用 ECB 模式加密文件(也就是说,加密文本块而不链接到下一个块)。

有时它可以完美地工作,但有时却不能。当它加密 128 字节数据并写入 129 字节时,问题就出现了。它会完美地工作,直到第一次这样做,但随后解密将丢失一个字节,并且会使一切变得混乱。我知道这一点是因为当它出错时,你可以看到密码(第 88 行,一个字节数组)的长度是 129,而不是 128,然后它被写入文件。

这是我的意思的一个例子: 加密:testtesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttest

输出:testtesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttest(500字节的混乱数据)

我已经附上了我的完整代码;为了快速运行,我启用了解密以在加密后立即生成到标准输出。

因此,只需运行: -k key (将生成 key.public 和 key.private) -e key.public -i input -o output (将加密一些文件输入并将其存储在输出中,读取该文件,解密它,发送到标准输出)。

任何帮助,将不胜感激!

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.math.BigInteger;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Arrays;
import java.util.Scanner;
import java.io.*;
import java.util.List;
import java.util.Random;

public class RSA {


    public static void main(String[] args) throws UnsupportedEncodingException {
        List<String> list = Arrays.asList(args);
        if(list.contains("-h")) {
            System.out.println("Usage:");
            System.out.println("RSA …
Run Code Online (Sandbox Code Playgroud)

java encryption rsa ecb

3
推荐指数
1
解决办法
7989
查看次数

我的XOR PHP实现有什么问题?

我正在尝试使用Hex Key进行XOR实现.当这个代码(语法明显改变,但同样的想法)在C中执行,然后转换为十六进制时,结果是44 D6 B4 7E

但是当我在PHP中运行此代码时,我得到36 32 31 31

很明显,每个$ string索引都会返回一个整数,但是为什么(对我而言)并不是很清楚.

这是我的PHP代码:

<?php
$text = "data";
$key =  array(0x20, 0xB7, 0xC0, 0x1F);
function xor_encrypt($string, $key) {
    for($i=0; $i<strlen($string); $i++) {
        $string[$i] = ord($string[$i]) ^ $key[$i % sizeof($key)];
    }
    return $string;
}
echo xor_encrypt($text, $key);
?>
Run Code Online (Sandbox Code Playgroud)

这是C代码

BYTE m_btKey[4] = { 0x20, 0xB7, 0xC0, 0x1F };
for ( UINT i = 0; i < m_uDataLen; ++i )
    m_szData[i] ^= ( m_btKey[i % sizeof(m_btKey)] );
Run Code Online (Sandbox Code Playgroud)

php hex xor

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

标签 统计

ecb ×1

encryption ×1

hex ×1

java ×1

php ×1

rsa ×1

xor ×1