首页 > 其他分享 >Exercise: rot13Reader

Exercise: rot13Reader

时间:2023-08-05 23:22:12浏览次数:32  
标签:Cipher rot13Reader 形式 rot13 Caesar && Exercise

rot13是英文字母加密里面Caesar Cipher(其实就是移位加密)的一种特殊形式,简单来说就是把字母前后部分对调,其中a和n对调,以此类推。针对性的简单来做就是直接判断字母所在范围,然后视情况+/-13即可。但是rot13也可以用Caesar Cipher的通用形式来做,移位的公式其实很简单,见下面代码中rot13部分实现,主要代码如下:

 1 type rot13Reader struct {
 2     r io.Reader
 3 }
 4 
 5 func rot13(b byte) byte {
 6     if b >= 'a' && b <= 'z' {
 7         b = 'a' + (b-'a'+13)%26
 8     }
 9     if b >= 'A' && b <= 'Z' {
10         b = 'A' + (b-'A'+13)%26
11     }
12     return b
13 }
14 
15 func (reader rot13Reader) Read(b []byte) (int, error) {
16     n, err := reader.r.Read(b)
17     if err != nil {
18         return 0, err
19     }
20     for i := 0; i < n; i++ {
21         b[i] = rot13(b[i])
22     }
23     return n, err
24 }

这个通用形式和rot13的简单形式计算是等价的,稍加推导即可。此外,上面的rot13代码稍加修改,即可改为Caesar Cipher形式。

标签:Cipher,rot13Reader,形式,rot13,Caesar,&&,Exercise
From: https://www.cnblogs.com/wxiong/p/17608842.html

相关文章

  • Exercise: Readers
    这个练习说明是实现接口Read,返回一个无限的字母‘A’字符流。接口Read的调用,通过error为io.EOF来判定数据流结尾。那么往slice里面一直写‘A’,error里面一直写nil不就是没有io.EOF了,所以就是无限字母‘A’的字符流了。主要代码如下:1typeMyReaderstruct{}23func(MyReader......
  • Exercise: Errors
    Go的接口+Error使用练习,正好里面还引入了一个小知识点,不要在Error()实现里面用Sprint一个实现了Error()的类型,因为Sprint里面会调用类型的Error(),无限循环。主要代码如下:1typeErrNegativeSqrtfloat6423func(eErrNegativeSqrt)Error()string{4returnfmt.S......
  • Exercise: Fibonacci closure
    Go里面斐波那契数列的简单实现。我那会儿的教材是1,1起算,即f(0)=1,f(1)=1。Go的Exercise说明里面是0,1起算。既然是用Go写,索性就用它的定义吧,主要代码如下(Go的这个multipleresult用起来是真方便):1funcfibonacci()func()int{2F0,F1:=0,13returnfunc()int......
  • Exercise: Maps
    strings.Fields拆分单词,然后用map[string]int直接统计,主要代码:1funcWordCount(sstring)map[string]int{2fields:=strings.Fields(s)3result:=make(map[string]int)4for_,field:=rangefields{5result[field]+=16}7retu......
  • Thread Exercises C语言线程
    1/4Assignment4:ThreadsDue11Junby23:59Points10Availableuntil15Junat23:59Assignment4-ThreadExercisesDuedate11:59pm-SundayWeek13.Thisassignmentisdesignedtotestyourunderstandingofthreads,mutexesandsignalling.Download......
  • Fuzzing101-Exercise2 fuzz CVE-2009-3895和CVE-2012-2836
    autohr:cxingdate:2023年4月28日我们将对libexif0.6.14进行fuzz,目标是复现CVE-2009-3895和CVE-2012-2836两个漏洞。0x00准备工作我们先了解一下libexif这个库和两个CVE漏洞。关于libexif的信息如下:isalibrarywritteninpureportableC.readsandwritesEXI......
  • Fuzzing101-Exercise1 fuzz xpdf CVE-2019-13288
    author:cxingdate:2023年4月28日0x00前期准备第一个exercise是复现xpdf的CVE-2019-13288,在正式进入fuzz之前我们需要了解xpdf和CVE-2019-13288。找到xpdf的官网,上面有一句简短的介绍。XpdfisafreePDFviewerandtoolkit,includingatextextractor,imagecon......
  • Exercises 1 in Statistical mechanics: entropy, order parameters, and complexity
    这里记录一下一些在《Statisticalmechanics:entropy,orderparameters,andcomplexity》这本书的第一章中的一些比较有趣的题目。Q1ThereareMdiceeachwithNsides(labeledbyintegers)andateachturneverydiceisthrownindependentlyoneafteranother,and......
  • 练习——简单的MapExercise
    packagecom.collection_.map_;importjava.util.HashMap;importjava.util.Iterator;importjava.util.Map;importjava.util.Set;/*使用HashMap添加3个员工对象,要求键:员工id值:员工对象并遍历显示工资>18000的员工(遍历方式最少两种)员工类:姓名、工资、员工id*......
  • COMP3357 Exercise
    老师今天特意强调了考试,并且讲解了这些题,让人很难不怀疑......!!在这里每道题都认真研究一下,做个记录RSAAdaptedRSAwithCRT(a)很明显,就不多赘述了(b)由于\(g_1=g^{r_1(p-1)}\)有\(g_1\equivg^{r_1(p-1)}\pmod(p)\),根据费马小定理,\(g_1\equiv1\pmod{p}\),即\(g_1......