当前位置:  编程技术>其它
本页文章导读:
    ▪python和c#通用一致的des加密采用CBC和PKCS7      在python下可以下载pydes 下载地址为 http://pydes.sourceforge.net/在c#下实现des加密较为简单,如下: using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Secu.........
    ▪【转】编译运行android emulator       原文在这里source buile/envsetup.sh lunch sdk-eng make sdk -j2   编译完之后,sdk安装在了下面的目录里 ANDROIID_DIR/out/host/linux-x86/sdk 在这个目录下有一个压缩包,里面就是我们从eclipse里下载的sdk的包.........
    ▪用Erlang实现递归查找文件      实现代码如下 1 -module(recursionsearch). 2 -export([start/1]). 3 4 start(Dir) -> 5 L = search_cur_dir(Dir, []), 6 io:format("~p~n", [L]). 7 8 % 在当前文件夹中搜索指定文件 9 search_cur_dir(Dir, L) ->10 FunAddPath .........

[1]python和c#通用一致的des加密采用CBC和PKCS7
    来源:    发布时间: 2013-11-15
在python下可以下载pydes 下载地址为 http://pydes.sourceforge.net/

在c#下实现des加密较为简单,如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Security.Cryptography;
using System.IO;

namespace des
{
    class Program
    {
        static void Main(string[] args)
        {
            string ss = EncryptDES("1123", "12345678");

            string aa = DecryptDES(ss, "12345678");
        }

        //默认密钥向量
        private static string iv = "1234567812345678";
        /// <summary>
        /// DES加密字符串
        /// </summary>
        /// <param name="encryptString">待加密的字符串</param>
        /// <param name="encryptKey">加密密钥,要求为8位</param>
        /// <returns>加密成功返回加密后的字符串,失败返回源串</returns>
        public static string EncryptDES(string encryptString, string encryptKey)
        {
            try
            {
                byte[] rgbKey = Encoding.UTF8.GetBytes(encryptKey.Substring(0, 8));
                byte[] rgbIV = Encoding.UTF8.GetBytes(iv);
                byte[] inputByteArray = Encoding.UTF8.GetBytes(encryptString);
                DESCryptoServiceProvider dCSP = new DESCryptoServiceProvider();
                dCSP.Mode = CipherMode.CBC;
                dCSP.Padding = PaddingMode.PKCS7;
                MemoryStream mStream = new MemoryStream();
                CryptoStream cStream = new CryptoStream(mStream, dCSP.CreateEncryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
                cStream.Write(inputByteArray, 0, inputByteArray.Length);
                cStream.FlushFinalBlock();

                return Convert.ToBase64String(mStream.ToArray());
            }
            catch
            {
                return encryptString;
            }
   &nbs
    
[2]【转】编译运行android emulator
    来源:    发布时间: 2013-11-15

原文在这里


source buile/envsetup.sh

lunch sdk-eng

make sdk -j2

 

编译完之后,sdk安装在了下面的目录里

ANDROIID_DIR/out/host/linux-x86/sdk

在这个目录下有一个压缩包,里面就是我们从eclipse里下载的sdk的包。

如果你做过app开发都会知道,我们只有下载了不同版本的sdk之后才能创建不同版本的模拟器,我们编译完sdk之后就可以创建模拟器了

$ cd ANDROIID_DIR/out/host/linux-x86/sdk/android-sdk_eng.linux_linux-x86/tools

首先,查看当前sdk的Id号,用于创建一个模拟器

$ ./android list targets

Available Android targets:
----------
id: 1 or "android-14"
     Name: Android 4.0
     Type: Platform
     API level: 14
     Revision: 2
     Skins: WXGA800, WQVGA400, WXGA720, HVGA, WVGA854, WQVGA432, WVGA800 (default), QVGA, WSVGA
     ABIs : no ABIs.

 

创建一个模拟器

$ ./android create avd -n mydroid -t 1

-n 表示指定模拟器的名字, -t表示指定创建模拟的版本id

启动模拟器

$ ./emulator &

由于模拟器要启动android系统,他要使用几个映像文件,分别是:kernel-qemu , system.img, userdata.img, ramdisk.img

kernel-qemu:内核映像文件,它是linux操作系统针对qemu模拟器编译的内核文件,里面安装有qemu的仿真硬件驱动,如果将来在开发板或手机上移植android,那么,第一步就是要先make出一个支持开发板或手机的kernel来

system.img:是android系统的文件系统,里面包含了android系统的应用程序(apk),系统用到的各种库(jar, so, a)和资源, 配置文件(etc目录下),系统命令(bin, usr/bin, xbin) ,该映像文件是由out/target/product/PRODUCT/system目录打包生成的,我们可以对这个目录里的东西进行定制 化,比如,你要想让android系统默认为安装一个应用程序,那么可以将要安装的apk文件拷贝到out/target/product /PRODUCT/system/app目录下

userdata.img:用户数据映像,里面包含有程序安装信息,好比如是windows的C:/Program Files/目录

ramdisk.img:内存磁盘映像,这个文件对于没有做过Linux移植的人来说,不好理解,linux内核启动起来,要挂载一个文件系统作为 自己的根文件系统,通常文件系统是存放在块设备上的,也就是硬盘或flash上的。一个linux的根文件系统里面通常包含有以下内容:

usr:最大的目录,存放应用程序和文件

bin:常用的命令目录

etc:系统相关配置文件目录

dev:系统设备目录

opt:主机额外安装的软件目录

boot:存放系统启动时必须读取的配置文件,包括核心 (kernel) 在内

home:普通用户家目录

lib:系统使用库目录

var:日志文件目录

lost+found:系统不正常产生错误时,会将一些遗失的片段放置于此目录下

mnt:外设的挂载点目录

proc:虚拟文件目录,是系统信息的映射

root:root用户家目录

sbin:超级命令所在目录

tmp:一般使用者或者是正在执行的程序暂时放置文件的地方

而ramdisk.img这个映像,其实里面就是上述目录和一些基本配置文件的打包映像,ramdisk是将映像加载到内存里,然后将内存当做一个块设备(硬盘)来使用,所以说通常ramdisk.img通常比较小。当然,除了上面的FHS标准的Linux文件系统目录以外,android系统里,还增加了data,system目录。

前面所述的userdata.img和system.img映像,其实就是挂载到data,system目录下的。

我们可以通过下面的命令,来指定模拟器,启动哪个内核,使用哪些文件系统:

./emulator -avd mydroid -system ANDROIID_DIR/out/target/product/generic/system.img  -data ANDROIID_DIR/out/target/product/generic/userdata.img -ramdisk ANDROIID_DIR/out/target/product/generic/ramdisk.img  -kernel ANDROIID_DIR/prebuilt/android-arm/kernel/kernel-qemu-armv7
-system指定system.img

-data指定userdata.img

-ramdisk指定ramdisk.img

-kernel指定内核映像

实验:对androd系统进行瘦身

android系统抽屉里显示的应用存放在out/target/product/PRODUCT/system/app目录里,我们可以将一些不 常用的,不想用的apk文件删除,一来减小Android的体积,二来可以加快系统启动速度,因为在系统启动时,会扫描system/app目录下的 apk文件,对比有没有安装更新。

删除一些apk,去掉计算器,日历,电话,短信

$ rm -f ANDROIID_DIR/out/target/product/PRODUCT/system/app/Calculator.*

$ rm -f ANDROIID_DIR/out/target/product/PRODUCT/system/app/Calendar.*

$ rm -f ANDROIID_DIR/out/target/product/PRODUCT/system/app/Email.*

$ rm -f ANDROIID_DIR/out/target/product/PRODUCT/system/app/Message.*

$ rm -f ANDROIID_DIR/out/target/product/PRODUCT/system/app/Telephone.*

删除了之后,执行下面的命令,只编译system.img,而不去检查依赖关系,这样很快就能编译完

$ make snod

注:上述命令必须要保证执行了source buile/envsetup.sh和lunch full-eng之后,以后只要是说make,都指已经执行了前述两步骤

snod的意思是编译system imge no dependency

然后,再重新启动模拟器,指定自己编译的system.img,查看抽屉里有没有我们删除的应用

./emulator -avd mydroid -system ANDROIID_DIR/out/target/product/generic/system.img  -data ANDROIID_DIR/out/target/product/generic/userdata.img -ramdisk ANDROIID_DIR/out/target/product/generic/ramdisk.img  -kernel ANDROIID_DIR/prebuilt/android-arm/kernel/kernel-qemu-armv7

思考:我们能不能将全部的system/app下的apk删除掉,如果不能,哪些必须要保留,为什么?



wythern 2013-01-06 16:34 发表评论

    
[3]用Erlang实现递归查找文件
    来源:    发布时间: 2013-11-15

实现代码如下

1 -module(recursionsearch).
2 -export([start/1]).
3
4 start(Dir) ->
5 L = search_cur_dir(Dir, []),
6 io:format("~p~n", [L]).
7
8 % 在当前文件夹中搜索指定文件
9 search_cur_dir(Dir, L) ->
10 FunAddPath = fun(File) -> filename:join(Dir, File) end,
11 FindList = lists:map(FunAddPath, filelib:wildcard("*.erl", Dir)),
12 case file:list_dir(Dir) of
13 {ok, Filenames} ->
14 recursion(Dir, Filenames, FindList ++ L);
15 {error, Reason} -> {error, Reason}
16 end.
17
18 % 在当前文件夹的子目录中进行搜索
19 recursion(Dir, [H|T], L) ->
20 DirFlag=filelib:is_dir(filename:join(Dir, H)),
21 case DirFlag of
22 true -> recursion(Dir, T, search_cur_dir(filename:join(Dir, H), L));
23 false -> recursion(Dir, T, L)
24 end;
25
26 recursion(_, [], L) ->
27 L.

 

本文链接


    
最新技术文章:
▪修改月光博客网站中PHP常用正则表达式中出现...
▪js正则判断非法字符限制输入
▪通过正则表达式删除空行的方法
▪一个好用的正则匹配电话号手机号邮箱网址的...
▪JS 正则表达式用法介绍
▪几个小例子教你如何实现正则表达式highlight高...
▪如何实现正则表达式的JavaScript的代码高亮
▪js 玩转正则表达式之语法高亮
▪PHP中过滤常用标签的正则表达式
▪js 正则表达式学习笔记之匹配字符串
▪使用正则表达式匹配[***]样式的字符串
▪史上最详细的js日期正则表达式分享
▪php+正则将字符串中的字母数字和中文分割
▪正则表达式不区分大小写以及解决思路的探索...
▪正则替换换行符和把 br 替换成换行符
▪正则表达式匹配不包含某些字符串的技巧
▪匹配form表单中所有内容的正则表达式
▪正则表达式(括号)、[中括号]、{大括号}的区别...
▪正则表达式中的"g"是什么意思附件参数g的用...
▪浅谈正则表达式(Regular Expression)
▪Python正则表达式的七个使用范例详解
▪正则表达式提取img的src
▪常用的正则表达式集锦
▪使用正则表达式找出不包含特定字符串的条目...
▪js正则表达式中的问号几种用法小结
▪正则表达式概述 什么是正则表达式 .
▪ajax对注册名进行验证检测是否存在于数据库...
▪js正则解析URL参数示例代码
▪正则替换换行符和把 br 替换成换行符 iis7站长之家
▪几种常见攻击的正则表达式
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3