0%

本文是围棋程序中最基本的气的计算,一块棋的计算一共分为三步计算,第一步计算棋盘中所有空闲的交叉点;第二步对某块棋子的相邻的交叉点进行标记;第三步将第一步和第二步的结果相交得到交集;实现代码使用swift语言.以下是具体步骤:

阅读全文 »

人工智能真正的起点,我认为还是从AlphaGo说起,所以本源还是通过围棋的智能程序开始逐步推广应用到一般工业场景中.本文讲述围棋程序的基础功能就是计算气,而计算气首先要对某种颜色的棋子进行分块,某一些棋子相连时给予编号,具体实现如下:

阅读全文 »

SHA-512的轮函数计算,哈希函数是支撑单向性最重要的步骤,80轮计算是否可逆我不是很清楚,因为在我的脑子里所有关系式最终可以变成y=f(x),只不过有可能是离散的,有可能是连续的.

阅读全文 »

构成比特币的三个核心技术是非对称加密,P2P网络以及哈希算法,我对哈希算法的单向性很感兴趣,这些笔记是对实现SHA-512期间的笔记做一下记录;$W_t$字的计算是轮函数一次要计算80次,每次都要用到的。

阅读全文 »

工具箱系列将是一系列第三方库开箱即用的相关笔记,本篇记录gflags库的集成使用,根据unix的核心思想,命令行的解析是小而美(shell自动化使用)的关键,gflags库就是这样一个库.

阅读全文 »

本文主要讲述golang源码中的AES加密和我自己实现的AES的加密算法之间的相互加解密,根据前面的笔记发现golang源码的AES使用的是硬件指令加解密,效率非常高,而软件实现的算法细节比较详细但是速度过慢,但能够互相印证;这一版的实现逐步实现了PKCS7填充和CBC加密模式.

阅读全文 »

AES加密的C语言实现了基本密码块的加密,这里有两个问题,一是分组加密的一组必须是4x4个字节,这导致被加密的文件大小可能不是4x4的整数倍,这个时候就需要额外填充字符;二是将大块文件分组加密,会导致相同的明文有相同的密文,所以需采取不同的加密模式.本篇是AES加密算法的完结篇.

阅读全文 »

网上实现AES的例子很多,但是错误的和遗漏的也很多,大概是一知半解的人和转载的人很多导致的,所以我打算自己撸一遍算法,以保证后续使用的时候既能保证正确又能开箱即用,也仅供其他人参考。

阅读全文 »

AES的密钥扩展是为了保证每轮加密使用的密钥的不同,要满足防止各种密码攻击的分析,有一定的步骤,这里和AES的加密一样,也用到了S盒,以保持非线性替代.

阅读全文 »