浏览器端实现MD5加密

目前,绝大多数网站,用户登录所提交的密码,是以明文方式在网络上传输。我认为加密后传输会更安全一些。那么,如何在浏览器端把用户输入的明文密码加密呢。

用客户端脚本语言 Javascript (简称JS)可实现浏览器端加密,现在几乎所有的浏览器都支持JS。

我这里使用英国的IT安全顾问 Paul Johnston(下文简称PAJ)撰写的MD5加密算法,算法原文请参考 md5.js

MD5是一种不可逆的加密算法,这种算法是公开的。但即使你截获到密文(加密后的字符),也非常非常难计算出原文。

使用也非常简单,在页面中引入上述JS加密文件,调用即可。

<script src="md5.js"></script>
<script>
    //这是md5加密函数,也可以使用sha1加密函数
    md5_out = hex_md5('the original string');
</script>

当然,还有SHA-1等其它算法,请参考PAJ的个人网站

附:MD5加密算法及sha1加密算法JS文件下载

探索验证码广告

验证码广告,或者叫广告验证码,就是通过与广告结合的形式向人们展示验证码,使验证码的内容更丰富。

验证码,是浏览器从服务器下载到本地的带识别文本的一张小图片,一般用于需要提交的地方(如注册、评论等),以防止机器程序自动批量提交,减少垃圾信息。后来有技术可实现程序读取图片内容,于是程序设计者将验证码图片的文本模糊化、复杂化(在验证码文本内容中加入有意义的语句,如算式),来阻止机器程序的读取。然而这样,人们也更难于辨认,增加了识别时间和输错的概率。

因此有人想,何不把复杂的验证码做得更有趣,于是就有了广告形式的验证码。其实就是复杂的验证码广告化,增加验证码的趣味性,同时也不得不增加验证码图片的尺寸。

验证码广告

我本人挺讨厌验证码广告,因为我们身边已经有足够多的广告了,公交车内外、公交站台、道路两旁、建筑物墙体、电梯内外……本文不讨论这个情感问题,仅探讨验证码广告本身。希望服务提供商在广告与体验之间找到平衡点。

验证码广告服务商,国外有 DoubleRecall、Solve Media、NuCaptcha,国内有宇初网络(Update 20140425:其网站已无法打开)、印象码。笔者发现,国内知名的软件下载网站华军软件园,作为大型网站,去年率先试用了一段时间该服务(用在下载页面,需要输入广告验证码,下载链接方能点击)。不过,现在已经撤销。

优点

对于用户,使原本生硬,越来越难以辨认的验证码,变得有趣、生动。对于网站主,可以从中获得广告收效。对于广告主,该种形式的广告内容更容易被受众记住。

缺点

占用了较大的页面位置;少数用户会有抵触情绪,导致用户流失。

面临的竞争风险,这个创意容易被复制,可能会被大的广告平台挤下去。例如百度也于去年推出了“百度验证码推广”服务。

Codeigniter 框架集成 Smarty 模板

1.复制 Smarty 库文件夹到 Codeigniter 合适位置

将 Smarty 的库文件夹 Smarty/libs/ 复制到 Codeigniter 根目录,并重命名为 smarty。

目录结构截图

2.在 Codeigniter 中创建一个库文件

在 Codeigniter 应用目录下库文件夹 codeigniter/application/libraries/ 中新建一个文件,命名为 Mysmarty.php 代码如下:

require dirname(APPPATH) . '/smarty/Smarty.class.php';

class Mysmarty extends Smarty
{
    public function __construct()
    {
        parent::__construct();

        $this->setTemplateDir(APPPATH . 'views');
        $this->setCompileDir(APPPATH . 'cache');
    }
}

3.设置自动加载该库文件

修改自动加载文件 codeigniter/application/config/autoload.php
增加一项:

$autoload['libraries'] = array('mysmarty');

至此,集成完毕。

4.如何调用

在控制器文件中可以通过 $this->mysmarty 类来调用 Smarty 的方法了,如:

$this->mysmarty->assign('name', 'Eric Ling');
$this->mysmarty->display('sample.tpl');

附:上述操作所使用的程序版本:

CodeIgniter 2.1.3
Smarty 3.1.12

参加腾讯微博2012年度开放论坛

上周六,有幸参加了腾讯微博2012年度开放论坛。

论坛邀请了,蔡凌云(JiaThis 创始人),陈华(唱吧CEO),许朝军(啪啪创始人),朱频频(小i机器人CTO),张伟(博雅互动CEO)等业界有影响力的人,他们分享了不少创业过程中宝贵的经验。

一、 移动互联网

智能手机越来越便宜,现在千元智能机的配置已经相当不错。智能手机的占有率也在快速上涨。

人们越来越多地,随时随地使用手机,在路上、在公交、在电梯、各种排队、聚餐、甚至开会都在刷手机。

智能手机比电脑更容易上手和使用。

如果把小公司和个人称为屌丝的话,那么在移动互联网的世界,屌丝更有机会。PC互联网,用户从一个网站去往另外一个网站,需要输入很长的网址,这对很多人来说是个难题。但在手机上就不一样,切换到另一个应用,只要滑动屏幕点一下即可。

许朝军说,三年后PC就没了,你还做什么PC项目。我很认可这个观点,我把它解读为这是对PC发展趋势的判断。个人认为,PC的衰落,5年后才能有眉目。另外,许朝军强调,PC互联网的经验已经不适于移动互联网。一个在PC互联网有多年经验的人,面对手机,并没有多大优势;很多时候,那些经验反而会成为桎梏,需要剪掉这根辫子。

二 、微博的未来与格局

论坛上,腾讯微博方多次强调,绝不抄袭开发者的创意,不与开发者争食,这显示了腾讯微博的态度。希望腾讯能以平台的姿态,来对待开发者,真正做到与开发者共享用户与利益。

微博从2009年9月走入中国网民的视野,2010年是快速成长期,业内人士和众多成熟网民开通微博、并且频繁使用微博,2011年、2012年是巅峰期,越来越多的人在这两年开通和使用微博。在可以预见的未来2年,微博仍将处于巅峰中后期,不会出现明显衰落迹象。微博仍将是主流应用,仍将占据人们大部分的上网时间。

目前拥有最具价值关系链的平台是腾讯和新浪。在PC互联网时代,凡网站必自建账号,大家都想做成平台。可是最终能成为平台的,只能有几家,多了用户受不了。如果在移动互联网,还想着自建账号体系,那很可能成为绊脚石。使用第三方登录,使用已有的账号体系,是趋势,也是必然。

为什么我决定写博客

建立一个独立博客的想法,很早就有,一直没去实现。

为什么我今天搭建了这个网站,决定写博客。这缘于网络上的一篇文章《为什么你应该(从现在开始就)写博客》,深以为然、相见恨晚,在此对作者刘未鹏表示感谢!文章比较长,我把它总结如下:

写一个博客有很多好处,却没有任何明显的坏处。

  1. 能够交到很多志同道合的朋友。博客可做到,一次表达,无数次阅读。通过博客,即使不能与作者见面,也能深层了解。
  2. 书写促使更好的思考。
  3. “教”是最好的“学”。如果一件事情你讲不清楚,十有八九你还没有完全理解。
  4. 一个长期的有价值博客是一份很好的简历。

当然,写一个长期的有价值的博客可能会遇到麻烦。

担心别人认为没有价值:无论你面临什么困惑,总会有很多人同样遇到过;于是你苦苦思索之后的结果,肯定会对很多人有意义。

担心想法太幼稚或有漏洞等等被别人笑话:人非圣贤。正是因为单个人的想法总是有漏洞,才值得拿出来交流,被别人指出问题正是改进的空间,藏着掖着的想法永远不可能变得更成熟。

想写,但写不出来:思考本不是一件急于求成的事情。

没时间写:那干脆关掉博客,干点别的!