如何在服务器和 GWT 客户端之间使用 RSA?

2023-12-13

我想加密 Java 服务器后端和 GWT 客户端之间的数据。在 GWT 客户端上我使用sbn.js图书馆。它的工作速度非常快,而且比gwt-加密.

以下是我如何在给定 RSA (e,n) 的客户端进行加密。我创建了一个JSFiddle:

var n = "BC86E3DC782C446EE756B874ACECF2A115E613021EAF1ED5EF295BEC2BED899D26FE2EC896BF9DE84FE381AF67A7B7CBB48D85235E72AB595ABF8FE840D5F8DB";

var e = "3";
var d = "7daf4292fac82d9f44e47af87348a1c0b9440cac1474bf394a1b929d729e5bbcf402f29a9300e11b478c091f7e5dacd3f8edae2effe3164d7e0eeada87ee817b";

function do_encrypt() {
    var before = new Date();
    var rsa = new RSAKey();
    rsa.setPublic(n, e);
    var res = rsa.encrypt($("#plaintext").val());

    $("#ciphertext").val(res);
    $("#cipherb64").val(hex2b64(res));
    console.log("res");



}

$("#encrypt").click(function () {
    do_encrypt();
});

我使用要在服务器上解密的加密明文的十六进制表示形式。 这是我在服务器上解密的方法。

我使用以下库:

compile 'org.bouncycastle:bcprov-jdk15on:1.51'
compile 'org.bouncycastle:bcprov-ext-jdk15on:1.51'

以下是我如何使用 RSA 的 (d,n) 在服务器上解密:

    try {
        BigInteger modulus = new BigInteger("BC86E3DC782C446EE756B874ACECF2A115E613021EAF1ED5EF295BEC2BED899D26FE2EC896BF9DE84FE381AF67A7B7CBB48D85235E72AB595ABF8FE840D5F8DB",16);
        BigInteger exponent = new BigInteger("3");
        RSAKeyParameters publicKey = new RSAKeyParameters(false, modulus, exponent)

        BigInteger exponent2 = new BigInteger("7daf4292fac82d9f44e47af87348a1c0b9440cac1474bf394a1b929d729e5bbcf402f29a9300e11b478c091f7e5dacd3f8edae2effe3164d7e0eeada87ee817b", 16);
        RSAKeyParameters privateKey = new RSAKeyParameters(true, modulus, exponent2)

        String encryptedData = "a7f7d5c77c246729141cdfcc77f1f7b38d5f8066b0bc53b2e85119f3f1784f43be2140b5c382ad483bb57cc1b586962cbb1e831e6070a27e4880bbc549e20a372571d09c6b1269ddd7288916f10c96a9138f4165569c4767bfb489de2d44b450ed1495c99da985dc264dabadd9709ccd950ae55095373ccbc3344a26b3efd2dc";

        ////// decrypt
        AsymmetricBlockCipher d = new RSAEngine();
        d = new PKCS1Encoding(d);
        d.init(false, privateKey);

        byte[] messageBytes2 = new BigInteger(encryptedData,16).toByteArray();
        byte[] hexEncodedCipher2 = d.processBlock(messageBytes2, 0, messageBytes2.length); 


        println("encrypted:"+new String(hexEncodedCipher2));

    }
    catch(Exception e) {
        e.printStackTrace()
        println "#################### error"
    }

我得到以下异常:

Error |
org.bouncycastle.crypto.DataLengthException: input too large for RSA cipher.

我认为 println("encrypted:"+new String(hexEncodedCipher2)); 行是问题所在。

  1. 如何在客户端解密?

  2. 为什么每次使用相同的 (e,n) 和相同的明文运行客户端加密时都会得到不同的加密?


RSA只能加密比密钥长度短的数据块。

因此,您必须使用混合方案,即在 RSA 中加密一个随机密钥,该密钥将与 AES 等对称密码一起使用。

对于这个前任来说,我有很多主题:如何在C#中使用RSA加密文件(大数据)

接下来去哪里?JavaScript Java AES

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

如何在服务器和 GWT 客户端之间使用 RSA? 的相关文章

  • JQuery $.ajax() 在 java servlet 中发布数据

    我想将数据发送到 java servlet 进行处理 数据将具有可变长度并采用键 值对 A1984 1 A9873 5 A1674 2 A8724 1 A3574 3 A1165 5 数据不需要这样格式化 这就是我现在的方式 var sav
  • Eclipse - 安装新的 JRE (Java SE 8 1.8.0)

    我正在尝试安装 Java 8 到目前为止我所做的 安装最新版本的 Eclipse 下载并安装 Java SE 运行时环境 8http www oracle com technetwork java javase downloads jre8
  • 用于缓存的 Servlet 过滤器

    我正在创建一个用于缓存的 servlet 过滤器 这个想法是将响应主体缓存到memcached 响应正文由以下方式生成 结果是一个字符串 response getWriter print result 我的问题是 由于响应正文将不加修改地放
  • 如何停止执行的 Jar 文件

    这感觉像是一个愚蠢的问题 但我似乎无法弄清楚 当我在 Windows 上运行 jar 文件时 它不会出现在任务管理器进程中 我怎样才能终止它 我已经尝试过 TASKKILL 但它对我也不起作用 On Linux ps ef grep jav
  • 使用 nockjs 和 jest 进行 Promise/异步单元测试的代码覆盖率问题

    我使用 NockJS 和 Jest 为 React 应用程序编写了一个简单的 API 调用单元测试 如下所示 AjaxService js export const AjaxService post url data headers gt
  • IntelliJ 组织导入

    IntelliJ 是否具有类似于 Eclipse 中的组织导入功能 我拥有的是一个 Java 文件 其中多个类缺少导入 例子 package com test public class Foo public Map map public J
  • Lombok @Builder 不创建不可变对象?

    在很多网站上 我看到 lombok Builder 可以用来创建不可变的对象 https www baeldung com lombok builder singular https www baeldung com lombok buil
  • 此版本的 CLI 仅与 Angular 版本 5.0.0 或更高版本兼容错误

    我已经有 Angular 项目在 4 版本中运行 在安装新项目时 不幸的是我安装了 6 版本的 Angular cli 在以 4 版本运行的旧项目中运行 ngserve 命令时 这会引发错误 您的全局 Angular CLI 版本大于本地版
  • Javascript等待/异步执行顺序

    所以我试图把我的头脑集中在 Promise await async 上 我不明白为什么当 go 执行时 带有 finished 的警报会紧随 console log coffee 之后 当所有函数都使用等待 承诺时 为什么它只等待 getC
  • 如何将项目插入到特定索引处的空数组中?

    我想将一个项目插入到空数组的指定索引中 我看到有 Array prototype splice 方法 但是 如果我在空数组上使用 splice 它只会添加项目来结束数组 如下所示 var a a splice 3 0 item 3 cons
  • 什么时候可以使用Javascript,什么时候不可以?

    不使用太多 javascript jquery 是个好习惯吗 我们应该尽可能避免它 为了良好的可访问性 吗 什么时候可以使用 JavaScript 什么时候不能在网页设计和开发中使用 JavaScript 在什么场景 什么条件下 Updat
  • Hadoop NoSuchMethodError apache.commons.cli

    我在用着hadoop 2 7 2我用 IntelliJ 做了一个 MapReduce 工作 在我的工作中 我正在使用apache commons cli 1 3 1我把库放在罐子里 当我在 Hadoop 集群上使用 MapReduceJob
  • 如果 jquery 验证激活,如何在单选按钮中放置红色边框[重复]

    这个问题在这里已经有答案了 我的问题是 如果 jquery 验证像示例图片中那样激活 我无法使单选按钮具有红色边框 任何人都可以帮我解决这个问题吗 http i38 photobucket com albums e149 eloginko
  • ECDH使用Android KeyStore生成私钥

    我正在尝试使用 Android KeyStore Provider 生成的私有文件在 Android 中实现 ECDH public byte ecdh PublicKey otherPubKey throws Exception try
  • 标题的下边框小于宽度

    我需要创建一个下划线效果底部边框小于h2标题的宽度 通常我不上传图片 但我认为这可能有助于进一步解释问题 您可以为此使用伪元素 例子 http jsfiddle net SZ39x pseudo border position relati
  • Html5画布最热门的任意形状

    我正在尝试开发可以在画布中渲染图像和文本的程序 我尝试处理画布中图像的点击 但它适用于可矩形图像 我的问题 您是否知道处理单击画布中图像的可见部分 非透明部分 的解决方案或框架 我正在寻找 ActionScript hitTestObjec
  • ArrayList.clear() 和 ArrayList.removeAll() 有什么区别?

    假如说arraylist定义为ArrayList
  • 从后面的代码添加外部 css 文件

    我有一个 CSS 文件 例如 SomeStyle css 我是否可以将此样式表文档从其代码隐藏应用到 aspx 页面 您可以将文字控件添加到标头控件中 Page Header Controls Add new System Web UI L
  • Safari 扩展将消息发送到特定选项卡

    有没有办法从全局页面发送消息到特定选项卡 我目前正在做的是 在创建选项卡时 注入的脚本会创建一个唯一的 ID 并将包含该编号的消息发送到全局页面 并且全局页面会保存该编号 如果全局页面需要发送一些数据到一个tab 即 tab 3 然后全局页
  • 使用
    元素作为 JavaScript 代码的输入。这是最好的方法吗?

    各位 显然 我是编码新手 所以最近完成了一些有关 HTML 和 Javascript 的 Lynda 课程后 我的简单 HTML 页面遇到了困难 基本上 我想要的是使用 JavaScript 进行基本计算 让用户使用 HTML 输入两个数字

随机推荐

  • 当出现 E_USER_DEPRECATED 级别错误时如何运行 Behat 测试

    我有一个 Symfony 2 7 表单类型 它导致了一些级别错误E USER DEPRECATED 这个错误不是来自我自己的代码 而是来自vendor symfony symfony src Symfony Bridge Doctrine
  • Python套接字模块:如何更改客户端的本地端口?

    我想使用 TCP IP 作为客户端从网络获取包 With connect TCP IP TCP PORT 我可以更改对等地址的端口 但是我改变了本地计算机的端口 编辑 我想使用带有四个端口的网卡 网卡连接到发送大量数据的测量设备 我如何查看
  • 如何从身份验证器重定向到外部身份验证端点?

    我正在编写一个网络应用程序 由于不同客户的需求 我希望拥有灵活的身份验证选项 我用的是官方的cakephp 身份验证库 但它没有 OpenID Connect 身份验证器 所以我正在滚动自己的 我遇到的问题是我无法返回修改后的Cake Ht
  • 解码 IntelliJ IDEA 文件夹名称颜色

    我有一个项目 有 4 个 Git 根 Project Project commons Project ui and Data Model 由于某些配置 我需要放置Project commons Project ui and Data Mod
  • 向 BroadcastReceiver 发送额外内容

    我有一个运行以下代码的活动 定义了时间和间隔 Intent buzzIntent new Intent getBaseContext BuzzReceiver class PendingIntent pendingIntent Pendin
  • 上周一的日期 Excel

    今天是 2013 年 2 月 27 日 星期三 我需要一个公式 该公式将返回上周一的日期 即 02 17 2013 我需要这样才能在发送电子邮件的 vba 代码中使用文件名或电子邮件主题 With oMail Uncomment the l
  • 是否可以在 Silverlight 中绑定到 lambda 表达式?

    我有一个仅绑定到集合的列表框 该集合有一个子集合 StepDatas 我想绑定到子集合的计数 但使用 WHERE 语句 我可以绑定到 ChildCollection Count 但在需要添加 lambda 表达式时会迷失方向 这是 XAML
  • 在 init 中使用属性访问 iVar?

    这是上一个问题的分支 这是不好的做法吗 使用属性来设置 iVar Designated initializer 001 id initWithName NSString newName andType NSString newType se
  • 如何计算R中沿线的两点之间的地理距离?

    Inputs 我有两个形状文件导入到 R 中 这样我最终得到了 包含公交路线的空间线数据框 包含公交车站的空间点数据帧 绘制给定路线及其停靠点如下所示 样本数据 This link包括两个可作为 zip 格式下载的 shapefile 其中
  • IF EXISTS 条件不适用于 PLSQL

    我正在尝试在条件为 TRUE 时打印文本 选择的代码工作正常 当我只运行选择代码时 它显示 403 值 但当条件存在时我必须打印一些文本 下面的代码有什么问题 BEGIN IF EXISTS SELECT CE S REGNO FROM C
  • 用于测验应用程序的 Rails 关联和数据库设计

    我正在构建这个测验应用程序 我希望它有点复杂 我想出了这个数据库模式 但我真的很困惑 对我需要什么关联和东西感到困惑 嗯 需要注意的一件事是 当创建测试时 没有关于参加该测试的考生人数的信息 所以 我创建了test questions an
  • AJAX jQuery 每 5 秒刷新一次 div

    我从一个网站获得了这段代码 并根据我的需要进行了修改 div div
  • 如何使用适当的特异性来设计没有 !important 的 :root 样式

    里面一个自定义元素因为border color在父页面上设置 我无法设置border color不求助于工作 important host player O color var color2 border color var color2
  • perl fork() exec() ,子进程疯狂

    我在用Linux and sh is in tcsh 我做了一个非常基本的fork and exec 但我需要帮助来实施安全措施 基本上我的 perl 脚本调用 sh子进程中的脚本 但当我这样做时Ctrl c为了杀死父进程 子进程会忽略该信
  • Excel 中的链接表和切片器

    我无法在 Excel 中创建一个切片器 该切片器不仅按主表进行过滤 还按辅助表进行过滤 该辅助表应与第一个表 具有作为引用的字段键 链接 换句话说 主表是students表 有一个唯一的ID作为引用 第二个表是每个学生参加的课程 我希望切片
  • CentOS 7 上 Ambari 2.7.5 安装失败

    我正在 CentOS 7 计算机上安装 Apache Ambari 2 7 5 我正在关注Apache 网站上的安装指南 指南第 1 步的最后一个命令 mvn B 全新安装 rpm rpm DnewVersion 2 7 5 0 0 Dbu
  • 将结果右对齐

    我再次问同样的问题 现在提供更多详细信息 希望能得到有效的解决方案 在下面的代码中 输出将打印对齐到行的右侧 table border 1 style width 100 tr td align right div test div td
  • PHP - 根据另一个数组的元素对数组元素进行排序:)

    所以我有两个数组 其中之一看起来像这样 它的值或元素的数量可以改变 array 4dec def3 a3d6 d12f 和另一个 array array id gt d12f name gt John array id gt a5f1 na
  • 在文件夹/目录中搜索特定文件扩展名 (PHP)

    我正在尝试用 PHP 设计一个程序 该程序允许我在由多个文件夹组成的已知目录中查找具有特定文件扩展名 例如 jpg shp 等 的文件 示例代码 文档或有关我需要使用哪些方法的信息将非常感激 glob很简单 对于递归下降有一些建议readd
  • 如何在服务器和 GWT 客户端之间使用 RSA?

    我想加密 Java 服务器后端和 GWT 客户端之间的数据 在 GWT 客户端上我使用sbn js图书馆 它的工作速度非常快 而且比gwt 加密 以下是我如何在给定 RSA e n 的客户端进行加密 我创建了一个JSFiddle var n