一次一密,加密解密

2023-11-24

我正在尝试学习密码学并且一直在尝试这个练习

编写一个程序(最好是Java)生成一次性的pad,这是所有文件中比较大的一个 随机数据(例如 1 MB)。该程序还应该能够根据以下内容加密/解密文件 生成一次性本。

提示:使用以下测试向量来检查您的程序是否正确加密。

明文 (ASCII):乌云密布,一线希望
一次性密码(十六进制):6dc72fc595e35dcd38c05dca2a0d2dbd8e2df20b129b2cfa29ad17972922a2
密文(十六进制):28b14ab7ecc33ea157b539ea426c5e9def0d81627eed498809c17ef9404cc5

我尝试使用随机数生成器生成一次性密码本,因为我需要将它们转换为十六进制形式。我很确定我很困惑或者没有以正确的方式解决它

public static void oneTimePad()
{
    Random ran = new Random();
    String s = "0123456789ABCDEF";
    for(int i = 0; i < 100; i++)
    {   
        System.out.print(s.charAt(ran.nextInt(s.length())));
    }
}

上面是我的一次性本,我想知道如何使用一次性本实现加密并解密它。


这里有一个完整的工作示例:

    // convert secret text to byte array
    final byte[] secret = "secret".getBytes()

    final byte[] encoded = new byte[secret.length];
    final byte[] decoded = new byte[secret.length];

    // Generate random key (has to be exchanged)
    final byte[] key = new byte[secret.length];
    new SecureRandom().nextBytes(key);

    // Encrypt
    for (int i = 0; i < secret.length; i++) {
        encoded[i] = (byte) (secret[i] ^ key[i]);
    }

    // Decrypt
    for (int i = 0; i < encoded.length; i++) {
        decoded[i] = (byte) (encoded[i] ^ key[i]);
    }

    assertTrue(Arrays.equals(secret, decoded));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

一次一密,加密解密 的相关文章

随机推荐

  • 如何在 Rails 中设置 url 助手的默认主机?

    我想做这样的事情 config default host www subdomain example com 在我的一些配置文件中 这样object url帮手 ActionView Helpers UrlHelper 生成以以下内容开头的
  • 高效的算法可根据特定目标组成有效的表达式

    该问题表述为 给定一个仅包含数字 0 9 和一个目标值的字符串 返回通过在数字之间添加一些二元运算符 或 创建的所有表达式 以便它们计算为目标值 在某些情况下 可能没有任何二元运算符可以创建有效的表达式 在这种情况下 函数应返回空数组 新表
  • 如何在struct的方法中设置和获取字段

    创建这样的结构后 type Foo struct name string func f Foo SetName name string f name name func f Foo GetName string return f name
  • python基类如何判断子类是否重写了它的方法?

    这是我的猜测 但行不通 class BaseClass object def foo self return foo def bar self return bar def methods implemented self This doe
  • Java:优化哈希集以进行大规模重复检测

    我正在开发一个项目 需要处理大量推文 目标是在处理重复项时删除它们 我有推文 ID 它们以以下格式的字符串形式出现 166471306949304320 我一直在使用HashSet
  • 在 VBA 中重置列表框选择

    我试图在表单关闭时 重置 Excel VBA 中的列表框 目前 当我使用 userform1 hide 函数时 表单会消失 但是当我使用 show 函数再次打开它时 它仍然包含以前的选择 作为一个对此相对陌生的人 有人可以帮忙吗 列表框的代
  • 是否能够通过复制粘贴链接 URL 来下载 Github Actions 工件?

    我们正在做一个概念验证 研究 Github Actions 来为遗留系统的给定提交生成一个工件 然后我们需要在内部进一步处理它 所以我正在研究我们现在如何相对简单地做到这一点证明这是可行的 我们对拉链包装没问题 通过右键单击 操作 中作业页
  • 如何仅使用私钥(无助记词)将帐户导入 NEAR 钱包

    在这篇文章中 我将介绍如何仅使用您的私钥将帐户导入 NEAR 钱包 当您使用 CLI 或近 api js 创建帐户 或子帐户 并且只能访问私钥时 这非常有用 要导入帐户 只需单击此 URL 并替换YOUR ACCOUNT ID and YO
  • 强制 Visual Studio 在调试时始终“重建全部”

    编辑 基本上我需要的是 Visual Studio 在我进行调试时始终重建所有内容 我目前正在使用 Visual Studio 来编译我的汇编程序 使用 MASM 总的来说它工作正常 然而我遇到了一个恼人的问题 如果我包含一个像这样的文件
  • Google Chrome 扩展程序获取页面信息

    我正在制作一个 google chrome 扩展 我需要获取当前页面的 URL 和标题 我怎样才能实现这个目标 chrome tabs getSelected null function tab lt tab has all the inf
  • 如何使用 Iron Router 返回 404

    当我找到使用 IR 的 Meteor 应用程序中不存在的路线时 我会收到200带有 HTML 的响应 当在浏览器上呈现时 在控制台上显示 js 错误 说明No route found for path aRoute 怎样才能让它返回404
  • -[UIApplication _runWithMainScene:transitionContext:completion:] 中断言失败,

    我仅在 iOS9 中收到以下错误 这是我的代码 BOOL application UIApplication application didFinishLaunchingWithOptions NSDictionary launchOpti
  • 带有 UIViewController 的插件

    有人可以向我解释 Cordova iOS 插件的生命周期吗 特别是 我有一个正在尝试开发的插件 其中包含UIView 以及相关的UIViewController 我如何获得科尔多瓦UIView从我的扩展CDVPlugin类 这样我就可以将我
  • Java中获取二维数组的数组长度

    我需要获取行和列的二维数组的长度 我已经使用以下代码成功完成了此操作 public class MyClass public static void main String args int test test new int 5 10 i
  • 是否可以使用 HttpModule 删除一些发布数据?

    我正在将一个旧的经典 asp 网站转换为 asp net 该应用程序基本上是针对给定用户组的工具集的扩展 但它由外部供应商托管 为了执行到此应用程序的无缝传输 它会发布一些 xml 数据 该数据会触发 潜在危险的 Request Form
  • Linq-to-Sql SubmitChanges 不更新字段...为什么?

    我发布了这个question昨天晚上 这让我发现了一个huge问题 我的数据库中有一个名为 单位 的十进制列 每当我将该列的值设置为非零时 并且 SubmitChanges 列都会更新为新值 如果我尝试将该列的值设置为零 则 SubmitC
  • 如何fork JVM? [复制]

    这个问题在这里已经有答案了 可能的重复 Java 类似 C 的 Fork 我想知道如何从 JDK 派生一个子 JVM 或者甚至可以这样做吗 一些框架 例如 hadoop 会为特定任务创建一个子 JVM 因此请对这个主题进行一些说明 Than
  • 如何使用 EPPLus 修改图表系列?

    我想问一下如何使用 EPPLUS 库更新 Excel 中现有图表的系列值 我还不知道该怎么做 我已经成功创建图表 但仍然无法更新系列值 任何人都可以给我提供一些示例代码或参考链接吗 抱歉这么晚才回答 在搜索其他内容时看到您的帖子 如果图表有
  • vscode "python.jediEnabled": false,显示为未知配置设置

    这是settings json文件代码 python autoComplete addBrackets true python linting enabled true python pythonPath C Program Files P
  • 一次一密,加密解密

    我正在尝试学习密码学并且一直在尝试这个练习 编写一个程序 最好是Java 生成一次性的pad 这是所有文件中比较大的一个 随机数据 例如 1 MB 该程序还应该能够根据以下内容加密 解密文件 生成一次性本 提示 使用以下测试向量来检查您的程