昨天在做Arthur’s Online Riddle的时候有这么一道题目:
If QWERTY = ABCDEF then, OLSQFR = ?
不明白为什么很多人喜欢设置Windows开机密码,那个密码设了和没设是一样的,破解起来非常的容易。这里不打算介绍破解Windows密码的方法,而是用VBS修改Windows密码的方法,当然前提条件是你能进到操作系统中(比如趁别人开着电脑去上厕所的时候~)。
代码如下,我就不注释了,看得懂的不用注释也看得懂,看不懂的注释了也看不懂。看不懂的自己好好学习一下ADSI。
Const strPassword = "123456" Dim WshNetwork Set WshNetwork = CreateObject("WScript.Network") Dim UserName UserName = WshNetwork.UserName&",user" Dim Domain Set Domain = GetObject("WinNT://./"&UserName) Domain.SetPassword strPassword Domain.SetInfo
XP下直接运行即可,Vista和Windows 7需要以管理员身份运行(具体方法参见上一篇文章)。
昨天完成了VBS的凯撒密码算法,然后发现Google出来的C语言的凯撒密码算法乱七八糟,很多都是复制粘贴的,还不注明转载地址,连最先的出处都找不到。唉,天下文章一大抄。很多时候,碰到问题Google出来的都是千篇一律的答案,千篇一律也就罢了,还都是没有用的,真受不了。什么?百度一下?百度一下更加什么都不知道!
原来以为C语言的很好写,想不到写了一个小时才写完(不要鄙视我,我承认我是菜鸟),太久没写程序,卡在指针上面了。以下是我写的凯撒密码的C语言算法。你要Java的?对不起,我是一个守旧的人,我不喜欢Java。但是原理都一样吧,不记得在哪里看过一个话,语言并不重要,重要的是算法,语言是会过时的,但是算法不会。
#include <stdio.h> #include <stdlib.h> #include <string.h> char *caesar(const char *str,int offset) { char *start,*ret_str; start = ret_str = (char *) malloc(strlen(str) + 1); for(;*str!='\0';str++,ret_str++) { if(*str>='A' && *str<='Z') *ret_str = 'A' + (*str - 'A' + offset) % 26; else if(*str>='a' && *str<='z') *ret_str = 'a' + (*str - 'a' + offset) % 26; else *ret_str = *str; } *ret_str = '\0'; return (char *) start; } int main(void) { printf("%s\n","ABCDEFGHIJKLMNOPQRSTUVWXYZ"); printf("%s\n",caesar("ABCDEFGHIJKLMNOPQRSTUVWXYZ",3)); return 0; }
在密码学中,恺撒密码(或称恺撒加密、恺撒变换)是一种最简单且最广为人知的加密技术。它是一种替换加密的技术,明文中的所有字母都在字母表上向後(或向前)按照一个固定数目进行偏移後被替换成密文。例如,当偏移量是3的时候,所有的字母A将被替换成D,B变成E,以此类推。这个加密方法是以恺撒的名字命名的,当年恺撒曾用此方法与其将军们进行联系。
例如,当偏移量是左移3的时候(解密时的密钥就是3):
明文字母表:ABCDEFGHIJKLMNOPQRSTUVWXYZ
密文字母表:DEFGHIJKLMNOPQRSTUVWXYZABC
以上都是废话啦,最近在教一个小朋友VBS,给她出了一道题,让她实现凯撒密码算法,不过貌似有点难了。Google了一下凯撒密码,出来的基本都是C和Java的实现,还是我自己写吧。
Function Caesar(str,offset) Dim length,char,i Caesar = "" length = Len(str) For i = 1 To length char = Mid(str,i,1) If char >= "A" And char <= "Z" Then char = Asc("A") + (Asc(char) - Asc("A") + offset) Mod 26 Caesar = Caesar & Chr(char) ElseIf char >= "a" And char <= "z" Then char = Asc("a") + (Asc(char) - Asc("a") + offset) Mod 26 Caesar = Caesar & Chr(char) Else Caesar = Caesar & char End If Next End Function WScript.Echo Caesar("ABCDEFGHIJKLMNOPQRSTUVWXYZ",3)
WordPress的默认主题真不好使,代码竟然溢出了,将就着看吧,或者给我推荐一个好看点的主题也行。