谈撒盐(salt)加密

本文介绍了一种增强密码安全性的方法——密码加盐。通过在用户密码中加入随机生成的salt值,并将其一同进行哈希运算,即使两个用户的密码相同,由于salt的不同,哈希后的值也会不同,从而增加了密码破解的难度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在家做饭有佐料,在加密领域也有所谓的佐料,只是这是这里的佐料可不是为了味道好,而是为了保护对象的机密性。

往上面撒一些盐,可以有效的解决这个问题,即使用salt加密,它的基本想法是这样的:

1.用户注册时,在密码上撒一些盐。生成一种味道,记住味道。

2.用户再次登陆时,在输入的密码上撒盐,闻一闻,判断是否和原来的味道相同,相同就让你吃饭。

由于验证密码时和最初散列密码时使用相同的盐值,所以salt的存储在数据库。并且这个值是由系统随机产生的,而非硬编码。这就保证了所要保护对象的机密性。
下面图解一下加密过程:
这里写图片描述

注册时

1.用户注册,系统随机产生salt值。
2.将salt值和密码连接起来,生产Hash值。
3.将Hash值和salt值分别存储在数据库中。
这里写图片描述

登陆时

1.系统根据用户名找到与之对应的密码Hash。
2.将用户输入密码和salt值进行散列。
3.判断生成的Hash值是否和数据库中Hash相同。

分析到这里,就基本结束了,祝你撒盐愉快!

### 实现图像撒盐效果的方法 为了在微信小程序中实现图像撒盐效果,可以采用JavaScript来模拟椒盐噪声的效果。由于OpenCV 4和其他库不直接支持为图像添加椒盐噪声的功能[^2],开发者需自行编写代码以达到所需效果。 #### 创建画布并加载图片 首先,在WXML文件内创建一个`<canvas>`标签用于绘制图像: ```html <view> <canvas type="2d" id="saltCanvas"></canvas> </view> ``` 接着,在WXSS样式表里设置合适的尺寸和位置属性给这个组件。 #### 编写JS逻辑处理图像数据 然后,在对应的JS页面文件中定义如下函数用来获取原始图像的数据,并对其进行操作: ```javascript Page({ onLoad() { const query = wx.createSelectorQuery(); query.select('#saltCanvas') .fields({ node: true, size: true }) .exec((res) => { this.ctx = res[0].node.getContext('2d'); // 加载本地资源或网络链接作为背景图 let imgPath = '/path/to/your/image.jpg'; // 替换成实际路径 wx.getImageInfo({ src: imgPath, success: (result) => { const image = new Image(); image.src = result.path; image.onload = () => { this.drawImageWithSalt(image); }; }, }); }); }, drawImageWithSalt(img){ const canvasWidth = 300; // 设置宽度 const canvasHeight = 300; // 设置高度 this.ctx.canvas.width = canvasWidth; this.ctx.canvas.height = canvasHeight; // 绘制原图到画布上 this.ctx.drawImage(img, 0, 0, canvasWidth, canvasHeight); // 获取图像像素信息 var imageData = this.ctx.getImageData(0, 0, canvasWidth, canvasHeight), data = imageData.data; // 添加椒盐噪音 addSaltAndPepperNoise(data); // 将修改后的图像重新应用回画布 this.ctx.putImageData(imageData, 0, 0); function addSaltAndPepperNoise(pixelArray){ const noiseDensity = 0.01; // 噪声密度比例 for(let i=0;i<pixelArray.length;i+=4){ if(Math.random()<noiseDensity*2){ // 控制概率分布 pixelArray[i]=Math.random()>0.5?255:pixelArray[i]; // R通道 pixelArray[i+1]=Math.random()>0.5?255:pixelArray[i+1]; // G通道 pixelArray[i+2]=Math.random()>0.5?255:pixelArray[i+2]; // B通道 } } } } }); ``` 上述代码片段展示了如何通过操纵HTML Canvas API读取、编辑以及渲染带有椒盐噪声的新版本图像。这里的关键在于理解如何访问图像的RGBA颜色值数组,并按照一定几率将其某些部分置为白色(代表“盐”)或是保持不变(即黑色,“胡椒”的情况则由未被选中的区域自然形成)。此方法能够有效地模仿出类似于真实世界中存在的椒盐噪声现象。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值