HomeBrew
安装SageMath
:
启动的时候提示如下:
继续阅读macOS Catalina(10.15.4)安装应用提示 '无法打开"XXXX",因为无法验证开发者' 的解决方法
HomeBrew
安装SageMath
:
启动的时候提示如下:
继续阅读macOS Catalina(10.15.4)安装应用提示 '无法打开"XXXX",因为无法验证开发者' 的解决方法
在CTF比赛中,往往会涉及到RSA解密类的题目,有了这个工具(基于python3.x)做起来就得心应手了。
这个也可以作为安全工具来使用,检查密钥的安全性。
为了方便理解,先对RSA密钥体制做个简略的介绍。
- 选择两个大的参数,计算出模数 N = p * q
- 计算欧拉函数 φ = (p-1) * (q-1),然后选择一个e(1<e<φ),并且e和φ互质(互质:公约数只有1的两个整数)
- 取e的模反数d,计算方法为:e * d ≡ 1 (mod φ) (模反元素:如果两个正整数e和n互质,那么一定可以找到整数d,使得 e * d - 1 被n整除,或者说e * d被n除的余数是1。这时,d就叫做e的“模反元素”。欧拉定理可以用来证明模反元素必然存在。两个整数a,b,它们除以整数M所得的余数相等:a ≡ b(mod m),比如说5除3余数为2,11除3余数也为2,于是可写成11 ≡ 5(mod 3)。)
- 对明文m进行加密:c = pow(m, e, N),可以得到密文c。
- 对密文c进行解密:m = pow(c, d, N),可以得到明文m。
p
和 q
:两个大的质数,是另一个参数N的的两个因子。
N
:大整数,可以称之为模数
e
和 d
:互为无反数的两个指数
c
和 m
:密文和明文
(N, e)
:公钥
(N, d)
:私钥
pow(x, y, z)
:效果等效pow(x, y)% z
, 先计算x
的y
次方,如果存在另一个参数z
,需要再对结果进行取模。
密钥长度:n
以二进制表示的的位数,例如密钥长度为512
代表n
用二进制表示的长度为512bit
。
对于RSA加密算法,公钥(N, e)
为公钥,可以任意公开,破解RSA最直接(亦或是暴力)的方法就是分解整数N
,然后计算欧拉函数φ(n)=(p-1) * (q-1)
,再通过d * e ≡ 1 mod φ(N)
,即可计算出 d
,然后就可以使用私钥(N, d)
通过m = pow(c,d,N)
解密明文。
1. 定期更换密钥
2. 不同的用户不可以使用相同的模数N
3. p与q的差值要大,最好是差几个比特
4. p-1与q-1都应该有大的素因子,一般建议选择的两个大素数p、q使得p=2p+1和q=2q+1也是素数
5. e的选择不要太小
6. d的选择也是不可以太小,最好满足d>=n的4分之1
目前版本的Android Studio 3.6.3/4.0/4.1/4.2使用Robolectric-3.8/4.3.1/4.5.1/4.6.1,只能配合Powermock-1.6.6,不能高于这个版本PowerMock ,尽管软件源中的版本已经更新升级到2.0.7版本了,但是Robolectric并没有及时更新依赖。尝试过使用最新版本的PowerMock,结果很多莫名的报错。
如果 Windows 系统下出现如下提示,受限于Windows系统路径不能超过260个字符的限制
貌似Windows 10 Build 14352版中已经可以通过修改注册表去除260字符的路径长度限制了。
在项目/.idea/workspace.xml
文件中添加一行代码如下
对于使用MultiDex的应用,如果报告如下错误:
需要在build.gradle
中引入
例子测试代码:
注意,需要
才能使得配置生效。
如果发生如下错误:
继续阅读Android Studio 3.6.3/4.0/4.1/4.2配置Robolectric-3.8/4.3.1/4.5.1/4.6.1 Powermock-1.6.6单元测试环境
Android调试桥( adb )是一个开发工具,帮助安卓设备和个人计算机之间的通信。 这种通信大多是在USB电缆下进行,但是也支持Wi-Fi连接。 adb 还可被用来与电脑上运行的安卓模拟器交流通信。 adb 对于安卓开发来说就像一把“瑞士军刀”。
测试是否正常安装
1、如果你以前安装过,请先删除老的文件
2、下载 android-sdk-macosx
3、将下载的文件解压并移动到 ~/.android-sdk-macosx
4、运行 SDK Manager
5、根据你的需要选择,(我只需要Android SDK Platform-tools)[可选步骤]
6、选好后 Install
7、环境变量设置
8、更新配置文件
9、测试是否正常安装
看了看招行香港一卡通的界面,达成目标有两种方法:
常见的X.509证书格式包括:
后缀 | 作用 |
---|---|
cer/crt | 用于存放证书,它是2进制形式存放的,不含私钥 |
pem | 以Ascii来表示,可以用于存放证书或私钥。 |
pfx/p12 | 用于存放个人证书/私钥,他通常包含保护密码,2进制方式。 |
p10 | 证书请求 |
p7r | CA对证书请求的回复,只用于导入 |
p7b | 以树状展示证书链(certificate chain),同时也支持单个证书,不含私钥。 |
对于常见的https证书 一般是用crt或者pem来保存, http证书可点击网页前的锁按钮得到, 并且进行导出
有个简单需求,就是 WordPress
多个网站同步数据的情况下,根据网站域名的不同,修改数据库返回的数据。
实现这个的需求就是在当前 WordPress
主题下的 functions.php
中实现 the_post
拦截函数,在数据库返回的数之后,进行替换。
例子如下:
这个替换过程只能针对没有使用 WP Super Cache
进行缓存的情况,如果已经使用 WP Super Cache
进行缓存,那么很可能导致没有及时生效。
如果只是需要替换域名,那么只需要在 wp-config.php 中定义 WP_HOME/WP_SITEURL 两个变量即可实现域名覆盖。
示例参考代码如下:
Android Studio 3.6.2
编译报错 “GC overhead limit exceeded”,详细的报错信息如下:
这个问题是由于编译过程中的Java的内存开销太大超过了默认限制导致的,解决方法就是增大Java的内存限制。
具体操作为在项目的 gradle.properties
中修改内存限制 org.gradle.jvmargs
默认情况下,这个限制在 1536m
我们需要拉大到 4096m
。
修改后的内容如下:
如果这个文件不存在,则在工程文件 build.gradle
,gradlew
, local.properties
等相同的目录下新建 gradle.properties
这个文件即可。
macOS Catalina(10.15.4)/IntelliJ IDEA 2018.3/Tomcat 9.0.33/Maven项目调试时报错,这个项目以前是可以正常调试的,一段时间之后,就不能正常调试之下了。