JavaScript是否有任何非对称加密选项?

如何解决JavaScript是否有任何非对称加密选项?

| 我必须通过未加密的通道(HTTP,而不是HTTPS)通过JavaScript AJAX调用传输一些敏感信息。 我想对数据进行加密,但是JavaScript方面的加密意味着我公开了密钥,这使得对称加密仅是出于默默无闻的安全目的。 JavaScript是否有任何非对称加密?这样,我可以将服务器解密密钥保密。 (我不担心服务器> JavaScript消息的安全性,只担心某些JavaScript>服务器消息的安全性)     

解决方法

根本需要加密的原因可能是为了防止中间人。在某些情况下,攻击者可以在不更改流量的情况下嗅探流量。该解决方案可以抵御这种威胁,但是对于能够修改流量的中间人而言,它根本无法提供任何保护。 如果攻击者可以更改流量,则他也将能够更改执行加密的脚本。最简单的攻击是仅从脚本中完全删除加密。如果您没有https,并且可以使用中间人(几乎在每种情况下都是这种情况),那么您根本无法控制呈现给的html或javascript最终用户。攻击者可能会完全重写您的html代码和javascript,禁用加密,在您的表单中创建新的表单字段等。Https是在Web通道中进行安全通信的先决条件。     ,我已经做到了。我使用此JavaScript客户端非对称RSA加密来防止登录凭据通过HTTP以纯文本格式发送。 目的是防止基于网络嗅探的登录请求重播攻击。当然,它不像HTTPS那样安全,因为它不能抵抗中间人攻击,但是对于本地网络而言已经足够。 客户端加密使用了基于JSBN的Travis Tridwell的出色工作。 Travis的网页还可以生成私有和公共RSA密钥(如果您太懒了而无法使用
openssl
)。密钥以PKCS#1 PEM格式生成。我对“ 1”进行加密,以便每次登录时加密的内容都会更改。 在服务器端,我的Java代码使用Apache JMeter的
org.apache.jmeter.protocol.oauth.sampler.PrivateKeyReader
读取了PKCS#1 PEM文件:
PrivateKey pk = (new PrivateKeyReader(\"myPrivateKeyFile.pem\")).getPrivateKey();
然后我使用
byte[] enc = DatatypeConverter.parseBase64Binary(clientData);
Cipher rsa = Cipher.getInstance(\"RSA\");
rsa.init(Cipher.DECRYPT_MODE,pk);
byte[] dec = rsa.doFinal(enc);
String out = new String(dec,\"UTF8\");
然后,我检查客户端时间戳/时区是否与服务器端时间戳/时区匹配。如果延迟少于几秒钟,则登录过程将继续。否则,该请求将被视为重播攻击,并且登录失败。     ,这个问题似乎有您要解决的问题,JavaScript密码术库在浏览器中对表单数据进行签名PGP链接:http://www.hanewin.net/encrypt/具有RSA     ,服务器> JavaScript消息是否通过HTTPS发送? 如果没有,那么什么也不会阻止中间人更改脚本。如果可以访问未加密数据的代码遭到破坏,则任何加密都是无用的。     ,不对称的公钥/私钥是唯一的方法。为了防止MIM攻击,服务器可以使用用户密码对公钥进行哈希处理,然后用户(在浏览器中)将重新计算哈希值-如果匹配,则用户可以确信服务器发送的公钥没有被篡改-这取决于只有服务器和用户才知道用户密码的事实。 附言:我想以此作为评论,因为它比答案更合适,但我的观点不够:)     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


依赖报错 idea导入项目后依赖报错,解决方案:https://blog.csdn.net/weixin_42420249/article/details/81191861 依赖版本报错:更换其他版本 无法下载依赖可参考:https://blog.csdn.net/weixin_42628809/a
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
错误还原:在查询的过程中,传入的workType为0时,该条件不起作用 <select id="xxx"> SELECT di.id, di.name, di.work_type, di.updated... <where> <if test=&qu
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员 redisSetCpuAffinity(server.server_cpulist); ^ server.c: 在函数‘hasActiveC
解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 <property name="dynamic.classpath" value="tru
删除根组件app.vue中的默认代码后报错:Module Error (from ./node_modules/eslint-loader/index.js): 解决方案:关闭ESlint代码检测,在项目根目录创建vue.config.js,在文件中添加 module.exports = { lin
查看spark默认的python版本 [root@master day27]# pyspark /home/software/spark-2.3.4-bin-hadoop2.7/conf/spark-env.sh: line 2: /usr/local/hadoop/bin/hadoop: No s
使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams['font.sans-serif'] = ['SimHei'] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -> systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping("/hires") public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate<String
使用vite构建项目报错 C:\Users\ychen\work>npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-