`
sqlxx
  • 浏览: 17620 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

A Tour of Go: Exercise: Rot13 Reader

 
阅读更多

A Tour of Go


Exercise: Rot13 Reader

A common pattern is anio.Readerthat wraps anotherio.Reader, modifying the stream in some way.

For example, thegzip.NewReaderfunction takes anio.Reader(a stream of gzipped data) and returns a*gzip.Readerthat also implementsio.Reader(a stream of the decompressed data).

Implement arot13Readerthat implementsio.Readerand reads from anio.Reader, modifying the stream by applying theROT13substitution cipher to all alphabetical characters.

Therot13Readertype is provided for you. Make it anio.Readerby implementing itsReadmethod


package main

import (
	"io"
	"os"
	"strings"
)

type rot13Reader struct {
	r io.Reader
}

func rot13(p byte) byte {
	switch {
	case p >= 'A' && p <= 'M': p = p - 'A' + 'N'
	case p >= 'N' && p <= 'Z': p = p - 'N' + 'A'
	case p >= 'a' && p <= 'm': p = p - 'a' + 'n'
	case p >= 'n' && p <= 'z': p = p - 'n' + 'a'
	}
	
	return p
}


func (v rot13Reader)  Read(p []byte) (n int, err error) {
	original := make([]byte, 50)
	i, err := v.r.Read(original)
	for index, value := range original[:i] {
		p[index] = rot13(value)
	}
	return i, err
}

func main() {
	s := strings.NewReader(
		"Lbh penpxrq gur pbqr!")
	r := rot13Reader{s}
	io.Copy(os.Stdout, &r)
}


分享到:
评论

相关推荐

    rot13加解密工具

    1. **字母替换**:对于小写字母,a-z,rot13会将其替换为n-z, a-m;对于大写字母,A-Z,则替换为N-Z, A-M。例如,'a' 转换为 'n','b' 转换为 'o',以此类推,直到'z'转换回'a'。同样,'A' 转换为 'N','Z' 转换回 '...

    rot13:生锈的简单rot13 {en,de}编码器,带有测试和其他功能

    **rot13编码详解** `rot13`是一种简单的字符替换加密方法,源自早期的打字机密码系统。它的名称来源于“rotate by 13 places”,即字母表中每个字符向后移动13个位置。由于英文字母表有26个字母,rot13其实是一种自...

    使用ROT13算法加密解密文件C#2008

    ROT13是一种简单的字符替换加密方法,源自早期的打字机时代。它的基本原理是对英文字符进行13位的字母表偏移,即将每个字符替换为字母表中相距13个位置的字符。由于字母表是循环的,所以A加密后变成N,B变成O,...

    enigma:一个使用ROT13密码和摩尔斯电码解密和加密文件的简单程序

    解密过程则相反,首先将摩尔斯电码还原为ROT13加密过的文本,然后再进行ROT13解密。 对于Java开发者来说,"谜"程序提供了一个学习和实践加密算法的实例。通过阅读和分析源代码,我们可以了解如何在Java中实现这两种...

    ROT13Encrypt_C#_

    标题"ROT13Encrypt_C#_"暗示了这是一个关于使用C#编程语言实现ROT13加密解密的项目。在C#中,你可以通过遍历字符串并应用ROT13规则来实现这个功能。ROT13的工作原理是对字母进行13位的位移。对于小写字母,a到z之间...

    Rot13_Decoder:解码Rot13密码。 Rot13是可以旋转13位的替换密码

    本项目“Rot13_Decoder”专注于解码使用Rot13算法加密的文本,它是由JavaScript编写的,因此我们可以深入探讨这个编程语言以及Rot13编码的工作原理。 Rot13( Rotate by 13 places)是一种对称加密方法,它通过将...

    ROT-13:作业 10 - ROT-13 翻译器

    我们将制作一个实现 ROT13 的小网页——它将接收明文(明文或编码),执行 ROT13 操作,并向使用显示密文。目标学习目标完成此任务后,您应该... 了解如何使用JS操作网页了解如何使用 TDD 处理网页能够聪明地理解和...

    ROT13Encrypt_largest5ad_C#_

    本项目“ROT13Encrypt_largest5ad_C#_”聚焦于使用C#编程语言实现ROT13加密算法,这是一种简单的字符替换加密方法。下面将详细阐述ROT13加密算法以及如何在C#中实现这一算法。 ROT13(Rotate by 13 places)是一种...

    易语言字符串rot13算法源码

    由于英文字母表有26个字母,所以向前平移13位等同于向后平移13位,因此ROT13具有自解密性,即加密后的文本再次经过ROT13操作会恢复原样。 在易语言中,我们可以利用循环和条件判断来实现ROT13算法。首先,我们需要...

    matlab开发-rot13

    在MATLAB中,rot13是一种简单的字符编码技术,它被用作文本的加密和解密。ROT13,全称“Rotate by 13 places”,是字母表中的一种替换密码,通过将每个字母向前(或向后)移动13个位置来实现加密。这个方法在英文中...

    易语言字符串rot13算法

    例如,字母"A"经过ROT13后变为"N","B"变为"O",以此类推,"N"又会回转到"A"。 在易语言中,我们可以用循环和条件判断来实现ROT13算法。首先,我们需要遍历字符串中的每个字符。对于英文字符,我们可以通过比较...

    rot-13:ROT13密码JavaScript实现

    以下是一个简单的JavaScript函数,用于实现ROT13: ```javascript function rot13(str) { var result = ''; for (var i = 0; i ; i++) { var charCode = str.charCodeAt(i); if ((charCode &gt;= 65 && charCode )...

    caesar13:凯撒密码ROT13

    针对ROT = 13进行了测试,但是编写了使用任何ROT的函数的方法,只需更改测试文件中的rot变量即可对其进行其他ROT的测试。 运行 测试npm run test or yarn test dev npm run dev or yarn dev 构建npm run build or...

    ROT13:ROT13的实施

    $ ./rot13 with a little text # jvgu n yvggyr grkg $ ./rot13 &lt; test.txt # Jul qvq gur puvpxra pebff gur ebnq? $ echo "Jul qvq gur puvpxra pebff gur ebnq?" | ./rot13 # Why did the chicken cross the ...

    ROT13_utility:一个小文本到ROT13的翻译器ROT13到文本的翻译器

    例如,明文"A"通过ROT13加密后变为"N",而"Z"则变为"M"。数字和其他非字母字符不受此变换影响。 Python是一种高级编程语言,非常适合编写这样的简单转换工具。在Python中实现ROT13,可以通过创建一个映射表或者利用...

    C 代码 复制具有 使用 ROT13 编码和 ROT5 编码进行数字编码.rar

    “rot13”文件很可能是实现了ROT13编码的C源代码文件,它可能包含一个或多个函数,如`rot13_encode()`和`rot13_decode()`,分别用于加密和解密字符串。代码中可能会使用条件语句判断字符类型,以正确处理字母和其他...

    rot13译码器「rot13 decoder」-crx插件

    就地rot13解码器。 解码网页中的rot13。 只需选择文本,单击鼠标右键,然后从菜单中选择Rot13。 翻译会直接显示在页面中,而不显示在弹出框中。 这将保留所有格式,包括段落分隔符,文本样式和链接。 或者在发布之前...

    ROT13-xaedar:这是一个ROT13(可旋转13个位置)加密。将每个字符向前移动13个位置

    通过研究这个文件,我们可以更深入地了解ROT13的实现细节,并学习如何在不同的编程语言中实现这一算法。 总之,ROT13是一种简单易懂的加密技术,尽管其安全性有限,但作为密码学入门的实例,它可以帮助我们理解加密...

    rot13:我做了一个烂rot13的东西,但是它很受欢迎

    **标题解析:** "rot13:我做了一个烂rot13的东西,但是它很受欢迎" 这个标题提到了“rot13”,这是一种简单的字符编码替换算法,主要用于文本的简单加密。"烂"在这里可能是指作者自谦其代码或实现并不完美,但尽管...

    易语言源码易语言字符串rot13算法源码.rar

    在本压缩包“易语言源码易语言字符串rot13算法源码.rar”中,包含的是易语言实现的字符串rot13加密算法的源代码。 Rot13是一种简单的字符替换加密方式,最初用于英文文本,它通过将每个字母向后偏移13个位置来进行...

Global site tag (gtag.js) - Google Analytics