duangsuse::Echo
715 subscribers
4.25K photos
127 videos
583 files
6.46K links
import this:
美而不丑、明而不暗、短而不凡、长而不乱,扁平不宽,读而后码,行之天下,勿托地上天国。
异常勿吞,难过勿过,叹一真理。效率是很重要,盲目最是低效。
简明是可靠的先验,不是可靠的祭品。
知其变,守其恒,为天下式;穷其变,知不穷,得地上势。知变守恒却穷变知新,我认真理,我不认真。

技术相干订阅~
另外有 throws 闲杂频道 @dsuset
转载频道 @dsusep
极小可能会有批评zf的消息 如有不适可退出
suse小站(面向运气编程): https://WOJS.org/#/
Download Telegram
科技圈的日常
「我不是针对 Base64,我是说在座的各位,你们都是加密算法」 恶意钓鱼,举报了(大雾 via https://twitter.com/coxxs/status/1069091057046966272?s=21
顺手给可能不知道的大家科普一下我的答案(比较 trivial 的选择连线):
首先顺口告诉你们我只是略微看了下钦蛤大学的 Internet 原理技术教程上面有讲这些就略微看了下,我不是学无线电或者计算机网络的,目前高二还不讲这些

MD5 是 Message Digest 家族的,是一种消息摘要算法(Hash 算法)

Base64 是一种完全的信息 Transform 或者说 Legalize 算法,属于纯编码算法,和 Unicode UTF* 系编码方式差不多,区别在于 Base64 编码函数 E_{base64}(bstm) 输入是字节序列输出是 Radix-64 有效的数值(都是 ASCII 里可打印字符)
而 UTF* 系的 E_{Utf*}(unicharstm) 输入是 Unicode 有效字符流,输出是字节流

AES 是加密算法,当然 DES 系也是,米国发明的不用说。

HMAC( Hash-based Message Authentication Code ) 是认证算法,我是猜的,人品好所以对了

DH(Diffie-Hellman) 是密钥交换算法,排除法选出

不过那是因为我不清楚缩写含义弄得,我知道有 DiffieHellman 系的非对称密钥交换类算法
而且我一直把它归为一种算法的派系使用,比如 RSA 就是 DH 系的
duangsuse::Echo
看到那个 Base64 加密的消息(没错,又忍不住熬夜) 本频道我一贯的风格就是深♂入了解 nontrivial 和教(念 "笑")学半(所以很喜欢教别人...) 下面我给大家科普一下啥是 Base64,顺推我以前写的入门 Android 应用 MinBase64,我一直觉得是同类应用里最有创新的一个,也是界面最真正为使用者考虑的一个(真好看)。<del>世界先进</del> Base64 是 Internet 信息交换里一个 MIME 编码的概念,主要是往各种只支持文字的电子邮件如 SMTP 里放各种裸二进制文件的做法…
懂了么?那么我们再来手动编码一下 ASCII 字符串 "HelloWorld",使用 Kotlin REPL 辅助

$ kotlinc 打开 REPL

= Predicate =
Radix-64 表

1. 获得此字符串的字节形式表示

"HelloWorld".fold(StringBuilder(), { ac , i -> ac.append(i.toInt()).append(",") }).let { it.deleteCharAt(it.lastIndex) }

好耶!是 72,101,108,108,111,87,111,114,108,100

2. 转化为二进制格式,并且知道要补充几个 padding

[72,101,108,108,111,87,111,114,108,100],它的长度 10 再 MOD(%) 3 为 1,就是说少了两个字节才补满,要填充两个 padding =

为了演示方便起见,因为我们已经知道这些数字大端二进制表示高位为 0 了,所以就在前面补充一个 '0' 凑满 8 位(原来的只有 7 位,因为 Java 的 toBinaryString 自动舍弃为 0 的高位)

listOf(72,101,108,108,111,87,111,114,108,100).forEach { print(Integer.toBinaryString(it)) }.run { println() }


坏耶!是 1001000110010111011001101100110111110101111101111111001011011001100100

listOf(72,101,108,108,111,87,111,114,108,100).forEach { print("0b0"); print(Integer.toBinaryString(it)); print(' ') }.run { println() }

OK!是 0b01001000, 0b01100101, 0b01101100, 0b01101100, 0b01101111, 0b01010111, 0b01101111, 0b01110010, 0b01101100, 0b01100100

3. 以六位一个 Int 的方式解释它,我们手工弄算了

01001000011001010110110001101100011011110101011101101111011100100110110001100100

010010 000110 010101 101100 011011 000110 111101 010111 011011 110111 001001 101100 011001 00

我们注意到后面还有一个不满 6 位的可怜的孩子,我们不管它,因为之前已经算过了该填充几个 padding 了
当然,如果多一个字符那个可怜的孩子就少了一个等号填充(11 * 8 % 3 = 1),多两个字符就不需要等号 padding 了,如果多三个字符就正好又是这次的情况
结果是

"010010 000110 010101 101100 011011 000110 111101 010111 011011 110111 001001 101100 011001 00".split(' ').map { Integer.parseInt(it, 2) }
//=> [18, 6, 21, 44, 27, 6, 61, 23, 27, 55, 9, 44, 25, 0]

然后手工拿 Radix-64 表译码,至于怎么译码你们自己动手,首先验证一下 18, 6, 21, 44 是不是 SGVs
Assertion OK
然后译码就可以了,译码完是这个样子

SGVsbG9Xb3JsZA==

Zsh 上打印出来

[DuangSUSE@duangsuse]~% echo SGVsbG9Xb3JsZA== | base64 -d
HelloWorld%

OK, 2 test(s) passed

注*:echo HelloWorld | base64 的结果多了一个 000a LineFeed 换行符
这里的这个没有换行符所以不一样,详情 echo ZAo= | base64 -d
Forwarded from AlPlank (Rime RainSlide)
现在,Telegram 「Apple 端」禁黄,Tumblr 全局禁黄。

那么… 我就突然想起来…

Tumblr 宣布禁黄之前,是不是有不少人还拿 Tumblr 说 Telegram 的不好?

😐
AlPlank
现在,Telegram 「Apple 端」禁黄,Tumblr 全局禁黄。 那么… 我就突然想起来… Tumblr 宣布禁黄之前,是不是有不少人还拿 Tumblr 说 Telegram 的不好? 😐
唉总算是除了我以外有人说话了,
话说,你们是觉得本频道的内容太高大上了不敢说话么?
可我喜欢热闹啊... 😶 所以以后还是多发点什么吧
#sysadmin 系统更新,glibc 因为没合适架构 headers 不能自动更?好奇怪的样子,glibc 太重要以至于我不敢动它,弄爆炸了我也很尴尬,毕竟现在我比较不想操心这类工作环境的事情...
duangsuse::Echo
#sysadmin 系统更新,glibc 因为没合适架构 headers 不能自动更?好奇怪的样子,glibc 太重要以至于我不敢动它,弄爆炸了我也很尴尬,毕竟现在我比较不想操心这类工作环境的事情...
#sysadmin #Backend 曾经我有一次 ArchLinux 里强行覆盖 glibc 最后好像弄得 ld 动态链接不上 libc 所有新创建的进程都不能用了... 最后我是 Arch LiveCD 进去 arch-chroot 才修复的... 累死
#sysadmin #life 最近襄阳的冬天有点冷,我家有两个用了超过 5 年的电脑都不工作了,生气。
duangsuse::Echo
#sysadmin #life 最近襄阳的冬天有点冷,我家有两个用了超过 5 年的电脑都不工作了,生气。
我们这些垃圾们,我想即使是曾经大学里计算机结构的学生、自己做过 OSdev,弄过嵌入式项目的在啥设备都没有的情况下也很难解决这类棘手的问题吧... 单有个资料... 或许... 帮助很大?(好吧并不

曾经我这个现用的电脑也坏过,内存条的问题,只是排除法出来的(btw. 那是我臆想的做法,其实是我猜出来的),因为我们这里没有调试环境很难弄啊...
唉,其实一台个人电脑用途的话,五年也就是寿命极限了吧... 确实该换了
Forwarded from Deleted Account
话说一般像 react native 这样的应用打包出来大小是多大?
Forwarded from dnaugsuz
我听说过 NativeScript,打包出来贼大
Forwarded from dnaugsuz
因为要带个 v8 引擎...
Forwarded from dnaugsuz
就很气,本来该带 v7、DukJs 这种小的
Forwarded from Deleted Account
我在看我遇到了的一个app
不到 15MB
确定是 html 的
apk 直接解压缩一下就全出来了
内容草死了
Forwarded from dnaugsuz
JavaScript 解释器们太多了,GitHub 上能找到的项目都不少
Forwarded from Deleted Account
具体是什么 app 就不说了
说出来我就能被群里各位大佬精准水表了
Forwarded from dnaugsuz
顺便纠个我自己之前的错,wchar_t 只是强调字符串里一个字符是 word(32) 位的,和 UTF* 系 Unicode 字符集编码无关