
计算机与数学
计算机与数学
Rand Tsui
东方欲晓,莫道君行早。
展开
-
校验和算法 rd16
randdigest 16bitconst modulus16 = 256 * 256;const rd16 = t => { let buf = Buffer.isBuffer(t) ? t : Buffer.from(t); let p = Math.floor(buf.length / 2); let r = buf.length % 2; let checksum = 0; for (let i = 0; i < p; i += 2) {.原创 2021-05-28 22:00:01 · 435 阅读 · 0 评论 -
任意Base编码的实现NodeJS
本程序参考开源项目:https://github.com/cryptocoinjs/base-x本程序还没有完全写完BaseN:let chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';let len = chars.length;let charCodeMap = Buffer.alloc(256);for (let i = 0; i < len; i++) { charC原创 2021-05-08 11:20:32 · 322 阅读 · 0 评论 -
多项式的转换,多项式变基
多项式的概念:a b ^ n + a2 * b ^ (n-1)原创 2021-05-03 15:42:17 · 2378 阅读 · 0 评论 -
256进制的转换
这个有什么意义,编码用的,把一串二进制,用一个字符表编码,比如base64就是一种常见的编码方案,那么编码有什么意义,可以参考:https://randtsui.blog.youkuaiyun.com/article/details/116064124。本文探讨的问题是,把一串二进制,用任意多个字符组成的字符表编码,这个字符表为BaseN,base64,N就是64个字符,比特币的base58,N就是58个字符,base32,N就是32个字符可以写一个函数,传入一个任意的字符串作为字符表,然后就可以用该表对一串二原创 2021-05-03 00:29:49 · 6692 阅读 · 0 评论 -
命名的字符支持
文件名不适合用:/\|:;*?"<>-=$.#&()[]{}!`~文件名可以用:_+,@%nodejs 对象 key value 支持utf-8,base64肯定支持nodejs 变量命名字符有限url 虚拟路径path可以自定义使用安全字符cookie有些字符不能使用,但是base64字符传输是安全的,querystring会把+号变成空格encodeURIComponent 会让utf-8字符串长度增加很多倍随机buffer转...原创 2021-05-02 20:59:05 · 269 阅读 · 0 评论 -
计算机存储的最小单位是字节byte,不是位bit
51单片机是8位的寄存器,汇编指令一次最小处理8位,也就是一个字节,不管是内存还是外存。内存、磁盘容量都是以多少字节为单位,没听说过多少个位的磁盘。磁盘的读写以字节为单位,磁盘驱动不会给你存入几个位。磁盘分区以字节为单位,不可能按多少位给你分。文件大小以字节为单位,操作系统不可能显示一个文件占多少位。ASCII码表,每个字符都是一个字节,没有低于8位的字符。所以计算机存储的最小单位是字节byte,1byte=8bit,单位是什么,单位就是1后面的byte。如果说计算机存储的...原创 2021-05-02 00:28:41 · 8465 阅读 · 0 评论 -
【数学问题】碰撞时间计算
本计算用于验证128位的安全性已知从 [1, n] 内随机每个数字的概率为 1 / n,每次产生一个随机数字需要消耗时间为 s然后,随机 m 次,都不出现 1 的概率为 [(n-1)/n]^m,那么出现的 1 的概率即为 1-[(n-1)/n]^m实验得到,在2的28次方内随机出1大约需要时间 10000 ms,那么它平均随机了 10000 / 0.0001 = 100000000 次2的28次方 = 268435456 九位数假设 s = 0.0001 毫秒 ms,那么 1 毫秒能随.原创 2021-04-24 19:58:23 · 1281 阅读 · 0 评论 -
2的n次方计算,支持大整数,nodejs代码
const fs = require('fs');const log = content => { content && fs.appendFileSync('./out.txt', content + '\n', err => {});};let n = BigInt(1);let s1, s2, s3s1 = `${0}次方:`.padStart(6, ' ');s2 = n.toString().padEnd(82, ' ');s3 = `${n.原创 2021-04-24 10:04:16 · 660 阅读 · 0 评论 -
2的n次方对照表,最大256次方,2021年
0次方:1 1位数 1次方:2 1位数 2次方:4 ...原创 2021-04-24 09:52:51 · 44014 阅读 · 2 评论 -
2的n次方对照表
2的1次方:22的2次方:42的3次方:82的4次方:162的5次方:322的6次方:642的7次方:1282的8次方:2562的9次方:5122的10次方:10242的11次方:20482的12次方:40962的13次方:81922的14次方:163842的15次方:327682的16次方:655362的17次方:1310722的18次方:2621442的19...原创 2018-12-24 10:42:23 · 323358 阅读 · 1 评论 -
哈希碰撞
哈希碰撞需要一个测试,得到在当前运行环境下的碰撞所需时间对于计算破解难度有重要意义。2的20次方:20ms、28ms、55ms、28ms、5ms2的22次方:53ms、54ms、24ms、13ms、122ms2的24次方:45ms、185ms、511ms、99ms、115ms2的26次方:544ms、743ms、483ms、956ms、315ms2的28次方:22132ms、20531ms、2632ms、8528ms、19218ms...原创 2021-04-23 23:35:50 · 297 阅读 · 0 评论 -
如何随机生成128个二进制位,然后toString
随机这个有什么用?uuid想必都听说过,就是通过随机一个大数字来保证唯一,sessionid也需要这个,sessionid建议128位,当然128位以上更安全。随机出来的二进制需要用字符表示,越短越好,便于传输如果用十六进制表示,一个字节8位,表示为两个十六进制的字符,128位需要32个字符表示,有没有更短的方案要知道一个字节是无法表示所有的8位,ASCII码一共才100多个,并且有一些控制字符无法显示可以用一个六十四个字符的码表来表示,大小写字母加10个数字一共62个字符,再加两个特殊字符原创 2021-04-23 17:52:00 · 2314 阅读 · 0 评论 -
ASCII表、ASCII扩展表
原创 2015-11-08 17:32:49 · 1746 阅读 · 0 评论 -
计算机位图坐标系与数学坐标系的转换
计算机位图的坐标系,左上角为(0, 0)点,x轴向右增大,y轴向下增大,x 和 y只能都大于0把数学坐标系放进计算机位图坐标系中,假设数学坐标系的原点为(m, n),那么 m 和 n 都大于0可以把计算机位图坐标系称为实际坐标系,数学坐标系称为虚拟坐标系,实际坐标系用来绘制显示,虚拟坐标系用来计算实际坐标和虚拟坐标需要一个转换,才能得到想要的结果实际坐标转虚拟坐标:假设实际坐标为(x1, y1),那么虚拟坐标为(x1 - m, y1 - n)虚拟坐标转实际坐标:假设虚拟坐标为(x2, y原创 2021-04-03 16:07:20 · 629 阅读 · 1 评论 -
如何使用程序开n次方
Math.pow(a, n) //a的n次方Math.pow(a, 1/n) //开a的n次方原创 2021-04-03 15:32:07 · 677 阅读 · 0 评论