- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 JavaScript 库 forge.js ( https://github.com/digitalbazaar/forge )
rsa publicKey(如果长度为 896 位)可以让我加密一段文本,但是 publicKey 本身的长度对于我的需要来说太长了。
如果我将其缩短为 460 位的 key ,那么 key 的长度几乎没问题,但是我只能加密一小部分。
我喜欢 RSA 的功能(加密/解密和签名/验证),但我不喜欢 key 本身的长度和大小限制。
还有其他形式的加密更适合我的使用吗?
需求:
大约 20 个字符长的公钥
能够加密大约 140 个字符
与 RSA 相同或相似的功能
我一直在尝试伪造 AES,但看起来加密是一种共享的东西 - 你有一个 key (是共享的?)。然后你可以创建一个密码和解密。但我不明白这如何与 rsa as 类似地工作;使用 rsa,我可以共享我的公钥并安全地进行签名和解密,但我不知道如何以我目前对 aes 的理解来做到这一点。
我目前将如何操作:
//make sure that what user has said both hasn't been tampered with and is for you
var kp=forge.pki.rsa.generateKeyPair({bits: 896,e:0x10001});
var m=['Hi!'];
m[1]=kp.privateKey.sign(forge.md.sha1.create().update(m[0],'utf8'));
console.log(m);
console.log(kp.publicKey.verify(forge.md.sha1.create().update(m[0],'utf8').digest().bytes(),m[1]));
var asked='did you read this?';
var ask=kp.publicKey.encrypt(asked);
var read=kp.privateKey.decrypt(ask);
var r=['yes!'];
console.log('yes?');
r[1]=kp.privateKey.sign(forge.md.sha1.create().update(r[0],'utf8'));
r[2]=kp.privateKey.sign(forge.md.sha1.create().update(read,'utf8'));
console.log(kp.publicKey.verify(forge.md.sha1.create().update(asked,'utf8').digest().bytes(),r[2]));
注意:您需要在生产中使用 try{}catch(e){}
进行解密和验证,以防我们针对不同用户的公钥发送消息。
到目前为止,我基本上可以加密和解密,但我不明白如何将这种形式的密码学变成我习惯的方式
//encypher the letter i then decypher it
var aes=forge.pkcs5.pbkdf2('k9','kr',1000,32);
var ci=forge.cipher.createCipher('AES-CBC',aes);
ci.start({'iv':'k5'});
ci.update(forge.util.createBuffer('i','utf8'));
ci.finish();
console.log(ci.output.toHex());
var ci=forge.cipher.createDecipher('AES-CBC',aes);
ci.start({'iv':'k5'});
ci.update(forge.util.createBuffer(forge.util.hexToBytes('7276131d61a323c37b5e451c3acc983e')));
ci.finish();
ci.output.toString('utf8')
//7276131d61a323c37b5e451c3acc983e
//"i"
// k9 kr k5 might as well just be me mashing the keyboard with my head btw
最佳答案
不,您不能使用 AES 来替代 RSA,因为正如您已经指出的,AES key 必须共享。
如今,460 位 RSA key 无法提供(任何)安全性。只需一点 EC2 时间即可对其进行暴力破解。建议至少使用 2048 位 RSA key 。
由于您想要签署内容,因此可以使用基于椭圆曲线加密 (ECC) 的 ECDSA,它使您能够使用更小的 key 来实现类似的安全性 ( Some numbers )。 Forge 不提供 ECC support还没有。
SJCL提供 ECDSA 的实现
var ecdsaKeys = sjcl.ecc.ecdsa.generateKeys(256);
ecdsaKeys.pub
提供 verify()
function ecdsaKeys.sec
提供 sign()
function 如果您需要加密而不是签名,请使用 ElGamal 而不是 ECDSA。 SJCL 也提供了这一点。由于使用任何大小的 ElGamal key 都不可能加密 140 个字符,因此您需要选择 hybrid encryption与 AES。 SJCL 还提供了一些身份验证模式,例如 GCM 或 CCM。
关于javascript - forge.js 复制我用 rsa 所做的事情,但用 aes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32193347/
导航工具栏 Forge 查看器中有一些可用的工具按钮。所以我只想从工具栏中隐藏“缩放工具”按钮和“第一人称工具”按钮。 我可以使用以下代码从工具栏中删除缩放工具按钮: var navTool = th
导航工具栏 Forge 查看器中有一些可用的工具按钮。所以我只想从工具栏中隐藏“缩放工具”按钮和“第一人称工具”按钮。 我可以使用以下代码从工具栏中删除缩放工具按钮: var navTool = th
我们需要一种方法来在我们的自定义集成中模仿 BIM 360 Docs 文件管理器,而使用 Forge API 并不能解决这个问题。我们正在尝试使用单个 API 调用检索给定文件夹的子文件夹列表。 我们
我们最近更新了我们的一个项目,以使用最新版本的 Autodesk Forge Viewer (v7.x)。 总的来说,迁移进行得很顺利,但我们注意到,对于某些模型,我们在相机的远切面方面存在问题。我发
我正在构建一个应用程序,用户可以在其中将 CAD 文件集合添加到工程项目中。 我的计划是为整个应用程序使用一个 transient 和 temporary 存储桶来进行临时存储。然后为每个项目创建一个
我在自己的网站上创建了 Forge 查看器版本 7。我正在尝试添加标记,如 Autodesk 网站中显示的那样(见下图); 是否有创建这样的标记工具的教程?我找到了一些,但它们要么是过时的版本,要么是
我的目标是通过根据我在 Revit 中创建的线条向查看器添加新的几何图形来突出显示房间,就像它们在此处所做的那样 Link 但我不知道如何访问这些线路 ID。我知道它们在 Revit (element
我们目前正在让客户端在页面加载时检索对象状态(这将导致模型中的“待处理”对象变成不同的颜色)。然后我们轮询更改以更新着色(首先:当查看器加载时,挂起的对象会着色,然后我们继续轮询以再次检查和更改状态,
我正在尝试通过 https://learnforge.autodesk.io/ 中的“修改模型”示例 不幸的是 ngrok 在我们的公司网络中不工作。如果我尝试运行下面的任何命令 ngrok http
有人能说出 redirect_url 如何与通配符结合使用吗?在帮助中,给出了以下信息: 三足 token 生成身份验证 URL 要请求用户获得检索访问 token 的权限,您可以将用户重定向到同意页
当我将 Forge Viewer 从 SVF 迁移到 SVF2 时,某些几何图形未加载,并且每个元素都会出现“无效的 OGT header ”和“无法解析 OGT 几何图形”。 Console err
所以我才开始使用 Forge。我只是有一个非常简单的示例 mod 用于学习目的。当我使用 gradlew build 导出 mod 时,一切正常,它将 mod 放入 forge 的 build\lib
我更喜欢使用通常的 MKL 工具链 defaults Continuum 提供的 channel 。但是,像许多人一样,我发现自己安装了很多来自 conda-forge 的软件包。 channel 。
我有一个在 Forge 开发环境中制作的库,其中一个位于 main源集,包含库代码;另一个在 testmod (或任何其他名称)源集,包含需要作为 Forge mod 加载的测试代码。 只需添加 so
我们正尝试使用 Autodesk Forge API 请求/命令检索描述或自定义属性字段,如 BIM360 文档中所示。 我们尝试了以下请求来检索有关特定文件的信息: https://forge.au
如果安装官方npm package , 它有效。 但是根据official documentation并简单地将 import { Viewer } from "forge-dataviz-iot-r
我们想将我们的一些 forge 查看器代码库移动到一个 react-app 中,并且无法弄清楚如何在不附加所有 Autodesk.Viewer.... 的情况下使用 viewer3d js api。在
我们想将我们的一些 forge 查看器代码库移动到一个 react-app 中,并且无法弄清楚如何在不附加所有 Autodesk.Viewer.... 的情况下使用 viewer3d js api。在
我找到了获取Revit文件的Autodesk Platform Services(Forge)API调用缩略图:请参阅此链接。但此API调用仅检索RVT缩略图,而不检索每个视图特定的缩略图。有没有办法
我发现示例中漂浮着一些 Autodesk.Viewing.SOME_EVENT 事件,当前使用这些事件: viewer.addEventListener(Autodesk.Viewing.SELECT
我是一名优秀的程序员,十分优秀!