2014年3月 ’ 的文章存档

轻松学习RSA加密算法原理

   目录  

  1. 必备数学知识
    1. 素数
    2. 互质数
    3. 指数运算
    4. 模运算
  2. RSA加密算法
    1. RSA加密算法简史
    2. 公钥与密钥的产生
    3. 加密消息
    4. 解密消息
    5. 签名消息
    6. 编程实践
      1. 计算公钥和密钥
      2. 编程实现
    7. RSA加密算法的安全性
    8. RSA加密算法的缺点

———————————————————————

以前也接触过RSA加密算法,感觉这个东西太神秘了,是数学家的事,和我无关。但是,看了很多关于RSA加密算法原理的资料之后,我发现其实原理并不是我们想象中那么复杂,弄懂之后发现原来就只是这样而已..

学过算法的朋友都知道,计算机中的算法其实就是数学运算。所以,再讲解RSA加密算法之前,有必要了解一下一些必备的数学知识。我们就从数学知识开始讲解。

必备数学知识

RSA加密算法中,只用到素数、互质数、指数运算、模运算等几个简单的数学知识。所以,我们也需要了解这几个概念即可。

素数

素数又称质数,指在一个大于1的自然数中,除了1和此整数自身外,不能被其他自然数整除的数。这个概念,我们在上初中,甚至小学的时候都学过了,这里就不再过多解释了。

互质数

百度百科上的解释是:公因数只有1的两个数,叫做互质数。;维基百科上的解释是:互质,又称互素。若N个整数的最大公因子是1,则称这N个整数互质。
阅读全文

php引用(&)详解及注意事项

本段摘自:PHP引用(&)使用详解

官方文档:

1.引用是什么:http://www.php.net/manual/zh/language.references.whatare.php
2.引用做什么:http://www.php.net/manual/zh/language.references.whatdo.php

如何为豆瓣FM写一个chrome的歌词插件

对于喜欢豆瓣FM的同学来说,没有歌词是件令人苦恼的事,下面我就来总结下怎样为豆瓣FM写一个chrome的歌词插件。

———————————

1.需要的技能

首先,你要会javascript,其次你要掌握一点chrome的hack,最后要有一个可以根据歌曲名查到歌词的API。

 

2.localStorage

localStorage与cookie类似,它是存储在客户端浏览器中的数据,它与cookie不同的一点是它没有时间限制。localStorage属于html5中的新特性。因为我们要做chrome的插件,所以按F12弹出开发者模式,点击resource,就可以看见localstorage选项了,通过localStorage,我们可以得到当前豆瓣播放的歌曲的id,歌曲名,演唱者等信息:
阅读全文

字符串渲染

本文翻译自 objc #9,感谢  @方一雄 提供校对。

在这次issue中我们已经讨论了很多关于字符串不同的话题,从编码到本地化再到语法分析。但多数情况下,字符串最终还是需要被绘制到屏幕上供用户查看、交互。这篇文章涵盖了最基本、最好的练习,以及在用户界面上呈现字符串可能遇到的常见陷阱。

如何将字符串绘制到屏幕上

为了简单起见,我们先看看UIKit在字符串渲染方面为我们提供了哪些控件。之后我们将讨论一下对于字符串的渲染, iOS 和 OS X 系统中有哪些相似和不同。
阅读全文

Ubuntu init启动流程分析

现行的Linux distros主流的有两种init方式:一种是广为流传的System V initialization,它来源于Unix并且至今仍被各种Linux distros所采用;另一种是近几年提出的Upstart方式,基于事件机制,系统的所有服务,任务都是由事件驱动的。据我所知,采用后一种方式的目前有Ubuntu(6.10 and later),Fedora(9.10 and later),Debian(optional)。虽然采用Upstart的发行版并不多,但它旨在取代旧式的System V initialization。

作为知识梳理,我现在就先在这里总结一下这两种方式各自的初始化流程,这也是为了方便整理思路:

之前在查找Linux系统init流程的相关资料时总是能够看到inittab的身影,但是在我的Ubuntu上是没有这个文件的,到后来才知道采用 Upstart方式的Ubuntu上是没有inittab这个文件的。在旧式的System V initialization中,/etc/inittab可是个相当重要的文件。init进程启动后第一时间找的就是它!inittab负责初始化系统,设置系统runlevel及进 入各runlevel对应要执行的命令。假设当前inittab中设置的默认runlevle是5,则init会运行/etc/init.d/rc 5命令,该命令会依据系统服务的依赖关系遍历执行/etc/rc5.d中的脚本/程序。进入/etc/rc5.d目录可以发现里面的文件都是到/etc /init.d/下对应的脚本/程序的软链接。以S开头的为启动的意思,以K开头的为停止。并且S/K后面的两位数数字代表了服务的启动顺序(由服务依赖关系决定)。
阅读全文

你所不知道的JavaScript数组

相信每一个 javascript 学习者,都会去了解 JS 的各种基本数据类型,数组就是数据的组合,这是一个很基本也十分简单的概念,他的内容没多少,学好它也不是件难事情。但是本文着重要介绍的并不是我们往常看到的 Array,而是 ArrayBuffer。

我写的很多东西都是因为要完成某些特定的功能而刻意总结的,可以算是备忘,本文也是如此!前段时间一直在研究 Web Audio API 以及语音通信相关的知识,内容侧重于音频流在 AudioContext 各个节点之间的流动情况,而现在要摸清楚音频到流底是个什么样的数据格式,所以对 ArrayBuffer 的研究就显得格外重要了。
阅读全文

推荐 15 款最好的 Bug 跟踪应用程序

对某个项目来说,最重要的一件事情就是需要跟踪和梳理各种 bug 和问题,找到并解决问题,否则,项目就会花费超多的时间,导致整个项目的重心偏移。而且,用户总想标记未解决的问题,保证项目的进度等等。团队会花费一部 分的精力去跟踪 bug ,并且找出问题所在,解决问题。

如果你使用一个 bug 和问题跟踪系统,那么会得到更好的最终结果,除此之外,还能打打提高工作效率,加快项目的进度,更好的完成任务。在这里,我们收集了最好的 15 款 bug 跟踪应用程序,提供给用户更舒适更方便的开发环境。欣赏完之后跟大家谈谈你的感想吧:)

15. Exceptional

1
阅读全文

一张图帮你了解App开发全貌(附PDF)

本文很详尽地描述了作为一个app开发者应该知道的过程。作者从自己的角度出发把app开发分成了6大部分,24个小部分。比较用心的地方在于它提供了涉及各个过程的521款工具,点击每个圆圈,就能查看相关部分的工具。比如点击App store optimization这一部分,新页面展示了相关的优化工具。

你可以下载文中的PDF查看,如果你想查看每个部分涉及的工具,可到原文中查看:A MAP OF THE ENTERPRISE APP DEVELOPER JOURNEY
阅读全文

寻找导致80JVM WebSphere集群崩溃的罪魁祸首——Oracle JDBC内存泄露

关于作者:Andreas Grabner有在Java和.Net领域十年以上的架构师和开发经历。现在他为Compuware担任技术策略师并且领导了Compuware应用性能管理中心的Excellence团队

你是否在不断地过早重启你的JVM以防止它们内存耗尽?或者你已经收到了来自应用专家干巴巴的建议“增加Java堆空间”?

我们有一个由八个节点组成的集群,每个节点上运行了10个JVM,每个JVM的堆空间大小为4.1GB。下面这张图表显示了这些JVM的内存消耗情况。这套系统被用在一个大型在线零售商店。它的JVM不断地耗尽内存,然后崩溃,并且有时导致整个主机挂掉。

15

从5月份开始所有的JVM显示出相同的内存消耗模式:用光了所有的4.1GB的堆空间直到崩溃。类似的模式有时甚至导致整个主机挂掉。
 
阅读全文

Python超级程序员使用的开发工具

我以个人的身份采访了几个顶尖的Python程序员,问了他们以下5个简单的问题:

  1. 当前你的主要开发任务是什么?
  2. 你在项目中使用的电脑是怎样的?
  3. 你使用什么IDE开发?
  4. 你将来的计划是什么?
  5. 有什么给Python程序员的建议?

就是这几个问题,我找了几个顶尖的程序员和编程书籍作家,问他们这几个相同的问题。下面是他们的回答,希望在他们的回答中你能找到一些可以让你的开发更便捷的工具。

Alex Martelli

人物简介:Alex Martelli是一位意大利计算机软件程序员,他是Python软件基金会的成员。从2005年初开始,他以“Über技术首领”的身份在加利福尼亚景山谷歌总部工作。他拥有意大利Bologna大学电子工程学位(1980)。他是《Python in a Nutshell》一书的作者,他还和其他人合著了《Python Cookbook》,他还写了一些其它一些作品,大部分都是和Python相关的。因为他对Python社区杰出的贡献,他被授予的荣誉包括2002 Activators’ Choice Award2006 Frank Willison award
阅读全文