最近想研究一下TRNG,这篇帖子对我非常有用。目前有很多芯片都带有TRNG,例如STM32F407,ESP32,CC2531,PIC24FJ128GB202等。而对于没有TRNG的单片机,我们还能用雪崩二极管的噪声来实现,参考http://onerng.info/。伪随机很好理解,那么什么样才是真随机,这篇帖子介绍的方法就很有意义了。
我的操作心得:
1.为了运行测试套件,需要安装Cygwin,如果要编译测试套件,要安装gcc环境,可以参考:https://www.cnblogs.com/hchacha/p/7147603.html,但是我没有编译成功;
2.下载楼主的压缩包,解压到一个目录,例如G盘根目录,目录如下:
G:\STS-2.1.2_包含样本_测试程序
│ assess.exe
│ assess__exe_from_ST
│ makefile
│ test_f722_random.bin
│ test_newlib.bin
│
├─data
│ BBS.dat
│ data.bad_rng
│ data.e
│ data.pi
│ data.sha1
│ data.sqrt2
│ data.sqrt3
│
├─experiments
│ │ create-dir-script
│ │
│ ├─AlgorithmTesting_F722
│ │ │ finalAnalysisReport.txt
│ │ │ freq.txt
│ │ │
│ │ ├─ApproximateEntropy
│ │ │ results.txt
│ │ │ stats.txt
│ │ │
│ │ ├─BlockFrequency
│ │ │ results.txt
│ │ │ stats.txt
│ │ │
│ │ ├─CumulativeSums
│ │ │ data1.txt
│ │ │ data2.txt
│ │ │ results.txt
│ │ │ stats.txt
│ │ │
│ │ ├─FFT
│ │ │ results.txt
│ │ │ stats.txt
│ │ │
│ │ ├─Frequency
│ │ │ results.txt
│ │ │ stats.txt
│ │ │
│ │ ├─LinearComplexity
│ │ │ results.txt
│ │ │ stats.txt
│ │ │
│ │ ├─LongestRun
│ │ │ results.txt
│ │ │ stats.txt
│ │ │
│ │ ├─NonOverlappingTemplate
│ │ │ data1.txt
│ │ │ data10.txt
│ │ │ data100.txt
│ │ │ data101.txt
│ │ │ data102.txt
│ │ │ data103.txt
│ │ │ data104.txt
│ │ │ data105.txt
│ │ │ data106.txt
│ │ │ data107.txt
│ │ │ data108.txt
│ │ │ data109.txt
│ │ │ data11.txt
│ │ │ data110.txt
│ │ │ data111.txt
│ │ │ data112.txt
│ │ │ data113.txt
│ │ │ data114.txt
│ │ │ data115.txt
│ │ │ data116.txt
│ │ │ data117.txt
│ │ │ data118.txt
│ │ │ data119.txt
│ │ │ data12.txt
│ │ │ data120.txt
│ │ │ data121.txt
│ │ │ data122.txt
│ │ │ data123.txt
│ │ │ data124.txt
│ │ │ data125.txt
│ │ │ data126.txt
│ │ │ data127.txt
│ │ │ data128.txt
│ │ │ data129.txt
│ │ │ data13.txt
│ │ │ data130.txt
│ │ │ data131.txt
│ │ │ data132.txt
│ │ │ data133.txt
│ │ │ data134.txt
│ │ │ data135.txt
│ │ │ data136.txt
│ │ │ data137.txt
│ │ │ data138.txt
│ │ │ data139.txt
│ │ │ data14.txt
│ │ │ data140.txt
│ │ │ data141.txt
│ │ │ data142.txt
│ │ │ data143.txt
│ │ │ data144.txt
│ │ │ data145.txt
│ │ │ data146.txt
│ │ │ data147.txt
│ │ │ data148.txt
│ │ │ data15.txt
│ │ │ data16.txt
│ │ │ data17.txt
│ │ │ data18.txt
│ │ │ data19.txt
│ │ │ data2.txt
│ │ │ data20.txt
│ │ │ data21.txt
│ │ │ data22.txt
│ │ │ data23.txt
│ │ │ data24.txt
│ │ │ data25.txt
│ │ │ data26.txt
│ │ │ data27.txt
│ │ │ data28.txt
│ │ │ data29.txt
│ │ │ data3.txt
│ │ │ data30.txt
│ │ │ data31.txt
│ │ │ data32.txt
│ │ │ data33.txt
│ │ │ data34.txt
│ │ │ data35.txt
│ │ │ data36.txt
│ │ │ data37.txt
│ │ │ data38.txt
│ │ │ data39.txt
│ │ │ data4.txt
│ │ │ data40.txt
│ │ │ data41.txt
│ │ │ data42.txt
│ │ │ data43.txt
│ │ │ data44.txt
│ │ │ data45.txt
│ │ │ data46.txt
│ │ │ data47.txt
│ │ │ data48.txt
│ │ │ data49.txt
│ │ │ data5.txt
│ │ │ data50.txt
│ │ │ data51.txt
│ │ │ data52.txt
│ │ │ data53.txt
│ │ │ data54.txt
│ │ │ data55.txt
│ │ │ data56.txt
│ │ │ data57.txt
│ │ │ data58.txt
│ │ │ data59.txt
│ │ │ data6.txt
│ │ │ data60.txt
│ │ │ data61.txt
│ │ │ data62.txt
│ │ │ data63.txt
│ │ │ data64.txt
│ │ │ data65.txt
│ │ │ data66.txt
│ │ │ data67.txt
│ │ │ data68.txt
│ │ │ data69.txt
│ │ │ data7.txt
│ │ │ data70.txt
│ │ │ data71.txt
│ │ │ data72.txt
│ │ │ data73.txt
│ │ │ data74.txt
│ │ │ data75.txt
│ │ │ data76.txt
│ │ │ data77.txt
│ │ │ data78.txt
│ │ │ data79.txt
│ │ │ data8.txt
│ │ │ data80.txt
│ │ │ data81.txt
│ │ │ data82.txt
│ │ │ data83.txt
│ │ │ data84.txt
│ │ │ data85.txt
│ │ │ data86.txt
│ │ │ data87.txt
│ │ │ data88.txt
│ │ │ data89.txt
│ │ │ data9.txt
│ │ │ data90.txt
│ │ │ data91.txt
│ │ │ data92.txt
│ │ │ data93.txt
│ │ │ data94.txt
│ │ │ data95.txt
│ │ │ data96.txt
│ │ │ data97.txt
│ │ │ data98.txt
│ │ │ data99.txt
│ │ │ results.txt
│ │ │ stats.txt
│ │ │
│ │ ├─OverlappingTemplate
│ │ │ results.txt
│ │ │ stats.txt
│ │ │
│ │ ├─RandomExcursions
│ │ │ data1.txt
│ │ │ data2.txt
│ │ │ data3.txt
│ │ │ data4.txt
│ │ │ data5.txt
│ │ │ data6.txt
│ │ │ data7.txt
│ │ │ data8.txt
│ │ │ results.txt
│ │ │ stats.txt
│ │ │
│ │ ├─RandomExcursionsVariant
│ │ │ data1.txt
│ │ │ data10.txt
│ │ │ data11.txt
│ │ │ data12.txt
│ │ │ data13.txt
│ │ │ data14.txt
│ │ │ data15.txt
│ │ │ data16.txt
│ │ │ data17.txt
│ │ │ data18.txt
│ │ │ data2.txt
│ │ │ data3.txt
│ │ │ data4.txt
│ │ │ data5.txt
│ │ │ data6.txt
│ │ │ data7.txt
│ │ │ data8.txt
│ │ │ data9.txt
│ │ │ results.txt
│ │ │ stats.txt
│ │ │
│ │ ├─Rank
│ │ │ results.txt
│ │ │ stats.txt
│ │ │
│ │ ├─Runs
│ │ │ results.txt
│ │ │ stats.txt
│ │ │
│ │ ├─Serial
│ │ │ data1.txt
│ │ │ data2.txt
│ │ │ results.txt
│ │ │ stats.txt
│ │ │
│ │ └─Universal
│ │ results.txt
│ │ stats.txt
│ │
│ ├─AlgorithmTesting_NewLib
│ │ │ finalAnalysisReport.txt
│ │ │ freq.txt
│ │ │
│ │ ├─ApproximateEntropy
│ │ │ results.txt
│ │ │ stats.txt
│ │ │
│ │ ├─BlockFrequency
│ │ │ results.txt
│ │ │ stats.txt
│ │ │
│ │ ├─CumulativeSums
│ │ │ data1.txt
│ │ │ data2.txt
│ │ │ results.txt
│ │ │ stats.txt
│ │ │
│ │ ├─FFT
│ │ │ results.txt
│ │ │ stats.txt
│ │ │
│ │ ├─Frequency
│ │ │ results.txt
│ │ │ stats.txt
│ │ │
│ │ ├─LinearComplexity
│ │ │ results.txt
│ │ │ stats.txt
│ │ │
│ │ ├─LongestRun
│ │ │ results.txt
│ │ │ stats.txt
│ │ │
│ │ ├─NonOverlappingTemplate
│ │ │ data1.txt
│ │ │ data10.txt
│ │ │ data100.txt
│ │ │ data101.txt
│ │ │ data102.txt
│ │ │ data103.txt
│ │ │ data104.txt
│ │ │ data105.txt
│ │ │ data106.txt
│ │ │ data107.txt
│ │ │ data108.txt
│ │ │ data109.txt
│ │ │ data11.txt
│ │ │ data110.txt
│ │ │ data111.txt
│ │ │ data112.txt
│ │ │ data113.txt
│ │ │ data114.txt
│ │ │ data115.txt
│ │ │ data116.txt
│ │ │ data117.txt
│ │ │ data118.txt
│ │ │ data119.txt
│ │ │ data12.txt
│ │ │ data120.txt
│ │ │ data121.txt
│ │ │ data122.txt
│ │ │ data123.txt
│ │ │ data124.txt
│ │ │ data125.txt
│ │ │ data126.txt
│ │ │ data127.txt
│ │ │ data128.txt
│ │ │ data129.txt
│ │ │ data13.txt
│ │ │ data130.txt
│ │ │ data131.txt
│ │ │ data132.txt
│ │ │ data133.txt
│ │ │ data134.txt
│ │ │ data135.txt
│ │ │ data136.txt
│ │ │ data137.txt
│ │ │ data138.txt
│ │ │ data139.txt
│ │ │ data14.txt
│ │ │ data140.txt
│ │ │ data141.txt
│ │ │ data142.txt
│ │ │ data143.txt
│ │ │ data144.txt
│ │ │ data145.txt
│ │ │ data146.txt
│ │ │ data147.txt
│ │ │ data148.txt
│ │ │ data15.txt
│ │ │ data16.txt
│ │ │ data17.txt
│ │ │ data18.txt
│ │ │ data19.txt
│ │ │ data2.txt
│ │ │ data20.txt
│ │ │ data21.txt
│ │ │ data22.txt
│ │ │ data23.txt
│ │ │ data24.txt
│ │ │ data25.txt
│ │ │ data26.txt
│ │ │ data27.txt
│ │ │ data28.txt
│ │ │ data29.txt
│ │ │ data3.txt
│ │ │ data30.txt
│ │ │ data31.txt
│ │ │ data32.txt
│ │ │ data33.txt
│ │ │ data34.txt
│ │ │ data35.txt
│ │ │ data36.txt
│ │ │ data37.txt
│ │ │ data38.txt
│ │ │ data39.txt
│ │ │ data4.txt
│ │ │ data40.txt
│ │ │ data41.txt
│ │ │ data42.txt
│ │ │ data43.txt
│ │ │ data44.txt
│ │ │ data45.txt
│ │ │ data46.txt
│ │ │ data47.txt
│ │ │ data48.txt
│ │ │ data49.txt
│ │ │ data5.txt
│ │ │ data50.txt
│ │ │ data51.txt
│ │ │ data52.txt
│ │ │ data53.txt
│ │ │ data54.txt
│ │ │ data55.txt
│ │ │ data56.txt
│ │ │ data57.txt
│ │ │ data58.txt
│ │ │ data59.txt
│ │ │ data6.txt
│ │ │ data60.txt
│ │ │ data61.txt
│ │ │ data62.txt
│ │ │ data63.txt
│ │ │ data64.txt
│ │ │ data65.txt
│ │ │ data66.txt
│ │ │ data67.txt
│ │ │ data68.txt
│ │ │ data69.txt
│ │ │ data7.txt
│ │ │ data70.txt
│ │ │ data71.txt
│ │ │ data72.txt
│ │ │ data73.txt
│ │ │ data74.txt
│ │ │ data75.txt
│ │ │ data76.txt
│ │ │ data77.txt
│ │ │ data78.txt
│ │ │ data79.txt
│ │ │ data8.txt
│ │ │ data80.txt
│ │ │ data81.txt
│ │ │ data82.txt
│ │ │ data83.txt
│ │ │ data84.txt
│ │ │ data85.txt
│ │ │ data86.txt
│ │ │ data87.txt
│ │ │ data88.txt
│ │ │ data89.txt
│ │ │ data9.txt
│ │ │ data90.txt
│ │ │ data91.txt
│ │ │ data92.txt
│ │ │ data93.txt
│ │ │ data94.txt
│ │ │ data95.txt
│ │ │ data96.txt
│ │ │ data97.txt
│ │ │ data98.txt
│ │ │ data99.txt
│ │ │ results.txt
│ │ │ stats.txt
│ │ │
│ │ ├─OverlappingTemplate
│ │ │ results.txt
│ │ │ stats.txt
│ │ │
│ │ ├─RandomExcursions
│ │ │ data1.txt
│ │ │ data2.txt
│ │ │ data3.txt
│ │ │ data4.txt
│ │ │ data5.txt
│ │ │ data6.txt
│ │ │ data7.txt
│ │ │ data8.txt
│ │ │ results.txt
│ │ │ stats.txt
│ │ │
│ │ ├─RandomExcursionsVariant
│ │ │ data1.txt
│ │ │ data10.txt
│ │ │ data11.txt
│ │ │ data12.txt
│ │ │ data13.txt
│ │ │ data14.txt
│ │ │ data15.txt
│ │ │ data16.txt
│ │ │ data17.txt
│ │ │ data18.txt
│ │ │ data2.txt
│ │ │ data3.txt
│ │ │ data4.txt
│ │ │ data5.txt
│ │ │ data6.txt
│ │ │ data7.txt
│ │ │ data8.txt
│ │ │ data9.txt
│ │ │ results.txt
│ │ │ stats.txt
│ │ │
│ │ ├─Rank
│ │ │ results.txt
│ │ │ stats.txt
│ │ │
│ │ ├─Runs
│ │ │ results.txt
│ │ │ stats.txt
│ │ │
│ │ ├─Serial
│ │ │ data1.txt
│ │ │ data2.txt
│ │ │ results.txt
│ │ │ stats.txt
│ │ │
│ │ └─Universal
│ │ results.txt
│ │ stats.txt
│ │
│ ├─BBS
│ │ ├─ApproximateEntropy
│ │ ├─BlockFrequency
│ │ ├─CumulativeSums
│ │ ├─FFT
│ │ ├─Frequency
│ │ ├─LinearComplexity
│ │ ├─LongestRun
│ │ ├─NonOverlappingTemplate
│ │ ├─OverlappingTemplate
│ │ ├─RandomExcursions
│ │ ├─RandomExcursionsVariant
│ │ ├─Rank
│ │ ├─Runs
│ │ ├─Serial
│ │ └─Universal
│ ├─CCG
│ │ ├─ApproximateEntropy
│ │ ├─BlockFrequency
│ │ ├─CumulativeSums
│ │ ├─FFT
│ │ ├─Frequency
│ │ ├─LinearComplexity
│ │ ├─LongestRun
│ │ ├─NonOverlappingTemplate
│ │ ├─OverlappingTemplate
│ │ ├─RandomExcursions
│ │ ├─RandomExcursionsVariant
│ │ ├─Rank
│ │ ├─Runs
│ │ ├─Serial
│ │ └─Universal
│ ├─G-SHA1
│ │ ├─ApproximateEntropy
│ │ ├─BlockFrequency
│ │ ├─CumulativeSums
│ │ ├─FFT
│ │ ├─Frequency
│ │ ├─LinearComplexity
│ │ ├─LongestRun
│ │ ├─NonOverlappingTemplate
│ │ ├─OverlappingTemplate
│ │ ├─RandomExcursions
│ │ ├─RandomExcursionsVariant
│ │ ├─Rank
│ │ ├─Runs
│ │ ├─Serial
│ │ └─Universal
│ ├─LCG
│ │ ├─ApproximateEntropy
│ │ ├─BlockFrequency
│ │ ├─CumulativeSums
│ │ ├─FFT
│ │ ├─Frequency
│ │ ├─LinearComplexity
│ │ ├─LongestRun
│ │ ├─NonOverlappingTemplate
│ │ ├─OverlappingTemplate
│ │ ├─RandomExcursions
│ │ ├─RandomExcursionsVariant
│ │ ├─Rank
│ │ ├─Runs
│ │ ├─Serial
│ │ └─Universal
│ ├─MODEXP
│ │ ├─ApproximateEntropy
│ │ ├─BlockFrequency
│ │ ├─CumulativeSums
│ │ ├─FFT
│ │ ├─Frequency
│ │ ├─LinearComplexity
│ │ ├─LongestRun
│ │ ├─NonOverlappingTemplate
│ │ ├─OverlappingTemplate
│ │ ├─RandomExcursions
│ │ ├─RandomExcursionsVariant
│ │ ├─Rank
│ │ ├─Runs
│ │ ├─Serial
│ │ └─Universal
│ ├─MS
│ │ ├─ApproximateEntropy
│ │ ├─BlockFrequency
│ │ ├─CumulativeSums
│ │ ├─FFT
│ │ ├─Frequency
│ │ ├─LinearComplexity
│ │ ├─LongestRun
│ │ ├─NonOverlappingTemplate
│ │ ├─OverlappingTemplate
│ │ ├─RandomExcursions
│ │ ├─RandomExcursionsVariant
│ │ ├─Rank
│ │ ├─Runs
│ │ ├─Serial
│ │ └─Universal
│ ├─QCG1
│ │ ├─ApproximateEntropy
│ │ ├─BlockFrequency
│ │ ├─CumulativeSums
│ │ ├─FFT
│ │ ├─Frequency
│ │ ├─LinearComplexity
│ │ ├─LongestRun
│ │ ├─NonOverlappingTemplate
│ │ ├─OverlappingTemplate
│ │ ├─RandomExcursions
│ │ ├─RandomExcursionsVariant
│ │ ├─Rank
│ │ ├─Runs
│ │ ├─Serial
│ │ └─Universal
│ ├─QCG2
│ │ ├─ApproximateEntropy
│ │ ├─BlockFrequency
│ │ ├─CumulativeSums
│ │ ├─FFT
│ │ ├─Frequency
│ │ ├─LinearComplexity
│ │ ├─LongestRun
│ │ ├─NonOverlappingTemplate
│ │ ├─OverlappingTemplate
│ │ ├─RandomExcursions
│ │ ├─RandomExcursionsVariant
│ │ ├─Rank
│ │ ├─Runs
│ │ ├─Serial
│ │ └─Universal
│ └─XOR
│ ├─ApproximateEntropy
│ ├─BlockFrequency
│ ├─CumulativeSums
│ ├─FFT
│ ├─Frequency
│ ├─LinearComplexity
│ ├─LongestRun
│ ├─NonOverlappingTemplate
│ ├─OverlappingTemplate
│ ├─RandomExcursions
│ ├─RandomExcursionsVariant
│ ├─Rank
│ ├─Runs
│ ├─Serial
│ └─Universal
├─include
│ cephes.h
│ config.h
│ decls.h
│ defs.h
│ externs.h
│ generators.h
│ genutils.h
│ matrix.h
│ stat_fncs.h
│ utilities.h
│
├─obj
│ approximateEntropy.o
│ assess.o
│ blockFrequency.o
│ cephes.o
│ cusum.o
│ dfft.o
│ discreteFourierTransform.o
│ frequency.o
│ generators.o
│ genutils.o
│ linearComplexity.o
│ longestRunOfOnes.o
│ matrix.o
│ nonOverlappingTemplateMatchings.o
│ overlappingTemplateMatchings.o
│ randomExcursions.o
│ randomExcursionsVariant.o
│ rank.o
│ runs.o
│ serial.o
│ universal.o
│ utilities.o
│
├─src
│ approximateEntropy.c
│ assess.c
│ blockFrequency.c
│ cephes.c
│ cusum.c
│ dfft.c
│ discreteFourierTransform.c
│ frequency.c
│ generators.c
│ genutils.c
│ linearComplexity.c
│ longestRunOfOnes.c
│ matrix.c
│ nonOverlappingTemplateMatchings.c
│ overlappingTemplateMatchings.c
│ randomExcursions.c
│ randomExcursionsVariant.c
│ rank.c
│ runs.c
│ serial.c
│ universal.c
│ utilities.c
│
└─templates
dataInfo
template10
template11
template12
template13
template14
template15
template16
template17.Z
template18.Z
template19.Z
template2
template20.Z
template21.Z
template3
template4
template5
template6
template7
template8
template9
3.将“G:\sts-2.1.2_包含样本_测试程序\experiments\AlgorithmTesting_F722”改名为“G:\sts-2.1.2_包含样本_测试程序\experiments\AlgorithmTesting”;
4.打开Cygwin,切换目录,输入“$ cd G:/sts-2.1.2_包含样本_测试程序”,按Enter;
5.输入“$ ./assess 51200”,按Enter;
6.输入0,按回车,提示选择文件,输入“test_f722_random.bin”,按回车,接着输入1,回车,输入0,回车,输入10,回车,输入1,回车,然后等待程序输出结果,结果保存在:
“G:\sts-2.1.2_包含样本_测试程序\experiments\AlgorithmTesting\finalAnalysisReport.txt”中。
|