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.Reader
that also implementsio.Reader
(a stream of the decompressed data).
Implement arot13Reader
that implementsio.Reader
and reads from anio.Reader
,
modifying the stream by applying theROT13substitution cipher to all alphabetical characters.
Therot13Reader
type is provided for you. Make it anio.Reader
by implementing
itsRead
method
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)
}
相关推荐
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`是一种简单的字符替换加密方法,源自早期的打字机密码系统。它的名称来源于“rotate by 13 places”,即字母表中每个字符向后移动13个位置。由于英文字母表有26个字母,rot13其实是一种自...
ROT13是一种简单的字符替换加密方法,源自早期的打字机时代。它的基本原理是对英文字符进行13位的字母表偏移,即将每个字符替换为字母表中相距13个位置的字符。由于字母表是循环的,所以A加密后变成N,B变成O,...
解密过程则相反,首先将摩尔斯电码还原为ROT13加密过的文本,然后再进行ROT13解密。 对于Java开发者来说,"谜"程序提供了一个学习和实践加密算法的实例。通过阅读和分析源代码,我们可以了解如何在Java中实现这两种...
标题"ROT13Encrypt_C#_"暗示了这是一个关于使用C#编程语言实现ROT13加密解密的项目。在C#中,你可以通过遍历字符串并应用ROT13规则来实现这个功能。ROT13的工作原理是对字母进行13位的位移。对于小写字母,a到z之间...
本项目“Rot13_Decoder”专注于解码使用Rot13算法加密的文本,它是由JavaScript编写的,因此我们可以深入探讨这个编程语言以及Rot13编码的工作原理。 Rot13( Rotate by 13 places)是一种对称加密方法,它通过将...
我们将制作一个实现 ROT13 的小网页——它将接收明文(明文或编码),执行 ROT13 操作,并向使用显示密文。目标学习目标完成此任务后,您应该... 了解如何使用JS操作网页了解如何使用 TDD 处理网页能够聪明地理解和...
本项目“ROT13Encrypt_largest5ad_C#_”聚焦于使用C#编程语言实现ROT13加密算法,这是一种简单的字符替换加密方法。下面将详细阐述ROT13加密算法以及如何在C#中实现这一算法。 ROT13(Rotate by 13 places)是一种...
由于英文字母表有26个字母,所以向前平移13位等同于向后平移13位,因此ROT13具有自解密性,即加密后的文本再次经过ROT13操作会恢复原样。 在易语言中,我们可以利用循环和条件判断来实现ROT13算法。首先,我们需要...
在MATLAB中,rot13是一种简单的字符编码技术,它被用作文本的加密和解密。ROT13,全称“Rotate by 13 places”,是字母表中的一种替换密码,通过将每个字母向前(或向后)移动13个位置来实现加密。这个方法在英文中...
例如,字母"A"经过ROT13后变为"N","B"变为"O",以此类推,"N"又会回转到"A"。 在易语言中,我们可以用循环和条件判断来实现ROT13算法。首先,我们需要遍历字符串中的每个字符。对于英文字符,我们可以通过比较...
以下是一个简单的JavaScript函数,用于实现ROT13: ```javascript function rot13(str) { var result = ''; for (var i = 0; i ; i++) { var charCode = str.charCodeAt(i); if ((charCode >= 65 && charCode )...
针对ROT = 13进行了测试,但是编写了使用任何ROT的函数的方法,只需更改测试文件中的rot变量即可对其进行其他ROT的测试。 运行 测试npm run test or yarn test dev npm run dev or yarn dev 构建npm run build or...
$ ./rot13 with a little text # jvgu n yvggyr grkg $ ./rot13 < test.txt # Jul qvq gur puvpxra pebff gur ebnq? $ echo "Jul qvq gur puvpxra pebff gur ebnq?" | ./rot13 # Why did the chicken cross the ...
例如,明文"A"通过ROT13加密后变为"N",而"Z"则变为"M"。数字和其他非字母字符不受此变换影响。 Python是一种高级编程语言,非常适合编写这样的简单转换工具。在Python中实现ROT13,可以通过创建一个映射表或者利用...
“rot13”文件很可能是实现了ROT13编码的C源代码文件,它可能包含一个或多个函数,如`rot13_encode()`和`rot13_decode()`,分别用于加密和解密字符串。代码中可能会使用条件语句判断字符类型,以正确处理字母和其他...
就地rot13解码器。 解码网页中的rot13。 只需选择文本,单击鼠标右键,然后从菜单中选择Rot13。 翻译会直接显示在页面中,而不显示在弹出框中。 这将保留所有格式,包括段落分隔符,文本样式和链接。 或者在发布之前...
通过研究这个文件,我们可以更深入地了解ROT13的实现细节,并学习如何在不同的编程语言中实现这一算法。 总之,ROT13是一种简单易懂的加密技术,尽管其安全性有限,但作为密码学入门的实例,它可以帮助我们理解加密...
**标题解析:** "rot13:我做了一个烂rot13的东西,但是它很受欢迎" 这个标题提到了“rot13”,这是一种简单的字符编码替换算法,主要用于文本的简单加密。"烂"在这里可能是指作者自谦其代码或实现并不完美,但尽管...
在本压缩包“易语言源码易语言字符串rot13算法源码.rar”中,包含的是易语言实现的字符串rot13加密算法的源代码。 Rot13是一种简单的字符替换加密方式,最初用于英文文本,它通过将每个字母向后偏移13个位置来进行...