⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 loop-aes-keygen

📁 Fast and transparent file system and swap encryption package for linux. No source code changes to li
💻
字号:
#!/bin/sh## loop-aes-keygen - Create loop-AES encryption keys## This program is free software; you can redistribute it and/or modify# it under the terms of the GNU General Public License as published by# the Free Software Foundation; version 2 dated June, 1991.## This program is distributed in the hope that it will be useful,# but WITHOUT ANY WARRANTY; without even the implied warranty of# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the# GNU General Public License for more details.## You should have received a copy of the GNU General Public License# along with this program;  if not, write to the Free Software# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.# # Copyright 2005-2006, Max Vozeler <xam@debian.org>## $Id: loop-aes-keygen 1333 2006-12-02 15:07:20Z xam $#set -eumask 077cipher=userids=rnd=/dev/randomversion=3usage(){	cat << USAGEusage: loop-aes-keygen [opts] <keyfile>  -v <1|2|3>	   Key format (Default: $version)  -u userid        Encrypt for GnuPG pubkey <userid>  -c cipher        Use GnuPG cipher <cipher>USAGE}get_options(){	while getopts 'v:s:c:u:h' f	do		case $f in		v) 			version=$OPTARG			;;		c)			cipher=$OPTARG			;;		s)			rnd=$OPTARG			;;		u)			userids="$userids $OPTARG"			;;					h)			usage			exit 0			;;		esac	done	shift `expr $OPTIND - 1`	keyfile=$1		if [ -z $keyfile ]; then		echo No output file. Aborting		usage		exit 1	fi	if [ $version -lt 1 ] || [ $version -gt 3 ]; then		echo Unsupported key format: $version		exit 1	fi}check_safe_loop(){	loopdev=$1	opts=$(/sbin/losetup $loopdev 2>&1)	if [ $? -ne 0 ]; then		echo "Error: Check for $loopdev failed ($opts)"		exit 1	fi			# If loop entry has an encryption= option assume it's safe	if echo "$opts" | grep -q encryption=; then		return 0	fi	return 1}check_safe_swap(){	if [ ! -r /proc/swaps ]; then		echo Error: Cannot read /proc/swaps		exit 1	fi	unsafe=	while read line	do		set -- $line		case $1 in		/dev/loop*)			if ! check_safe_loop $1; then				unsafe=$1				break			fi			;;		Filename*)			;;		*)			unsafe=$1			break			;;		esac	done < /proc/swaps	if [ $unsafe ]; then		echo Fatal: Unsafe swap detected: $unsafe		exit 1	fi	return 0}check_multikey_support (){	match=	case $1 in	1)		return 0;;	2)		match="multi-key";;	3)		match="multi-key-v3";;	*)		return 1;;	esac	grep -q "$match" /sbin/losetup}keygen(){	version=$1	keyfile=$2	gpgargs=$3	# These are the known loop-AES key formats:	#  v1.x    1     45 bytes           AES key         	#  v2.x   64   2880 bytes(45 * 64)  AES keys       	#  v3.x   65   2925 bytes(45 * 65)  #65 is md5 seed	case $version in	1) 		nkeys=1;;	2) 		nkeys=64;;	3) 		nkeys=65;;	*) 		return 1;;	esac	head -c 3705 $rnd | uuencode -m - | head -n $(($nkeys+1)) | tail -n $nkeys | gpg $gpgargs > $keyfile}get_options $*if ! check_safe_swap; then	exit 1fiif ! [ -x /usr/bin/gpg ]; then	echo "Error: gpg not found"	exit 1fiif ! [ -x /usr/bin/uuencode ]; then	echo "Error: uuencode not found - see package sharutils"	exit 1fiif ! check_multikey_support $version; then	echo "Warning: /sbin/losetup too old for v$version keys."fiif [ -e $keyfile ]; then	echo "Keyfile $keyfile exists. Aborting."	exit 1figpgargs="--armor"if [ "$userids" ]; then	gpgargs="$gpgargs --encrypt"	for id in $userids; do		gpgargs="$gpgargs --recipient $id"	doneelse	gpgargs="$gpgargs --symmetric"fiif [ $cipher ]; then	gpgargs="$gpgargs --cipher-algo=$cipher"fiif ! keygen $version $keyfile "$gpgargs"; then	echo An error occured while creating the key file.	exit 1fiexit 0

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -