编写一个数据加密
编写一个数据加密,数据是小于8位的整数,为了确保安全,在传递过程中需要加密,加密规则如下:首先将数据倒序,然后将每位数字都加上5,再用和除以10的余数代替该数字,最后将第一位和最后一位数字交换。
#include <stdio.h> unsigned foo( unsigned n ) { unsigned b0 = (n/1%10 + 5)%10; unsigned b1 = (n/10%10 + 5)%10; unsigned b2 = (n/100%10 + 5)%10; unsigned b3 = (n/1000%10 + 5)%10; unsigned b4 = (n/10000%10 + 5)%10; unsigned b5 = (n/100000%10 + 5)%10; unsigned b6 = (n/1000000%10 + 5)%10; return b0*1 + b5*10 + b4*100 + b3*1000 + b2*10000 + b1*100000 + b6*1000000; } void test( unsigned n ) { printf( "%7u --> %7u\n", n, foo(n) ); } int main( void ) { test( 0 ); test( 123 ); test( 1234567 ); }
/* 编写一个数据加密,数据是小于8位的整数,为了确保安全,在传递过程中需要加密,加密规则如下: 1.首先将数据倒序, 2.然后将每位数字都加上5, 3.再用和除以10的余数代替该数字, 4.最后将第一位和最后一位数字交换。 */ #include<stdio.h> int digit(long long p);//判断位数 int main() { long long p;//p用于存储密码 int n;//n用于存储所输入密码的位数 printf("请输入密码:"); scanf("%lld",&p); n=digit(p); int arr[n]; for(int i=0;i<n;i++) { arr[i]=(p%10+5)%10;//步骤1 2 3可以用这一个式子解决 p/=10; } int temp; temp=arr[0]; arr[0]=arr[n-1]; arr[n-1]=temp;//至此完成第四个步骤,交换首末位的值 for(int i=0;i<n;i++) { printf("加密后的密码是:%d",arr[i]);//输出加密后的密码 } printf("\n"); return 0; } int digit(long long p) { int count=0; long long temp; temp=p; while(temp!=0) { count++; temp/=10; } return count; }