示例#1
0
	def disp_ring_data(self):
		acc=RSA()
		temp = self.head
		print("------- Node", temp.key,"-------")
		for entry in temp.data:
			print("\t<---->")
			print(">>FILE NAME:\n", entry.name)
			print(">>PUBLIC KEY:\n", entry.pubkey)
			content=entry.content
			if not users_df[users_df['user']==curr_user][entry.name].isna().values[0]:
				print("Decrypting with private key...")
				print(">>CONTENT:\n", acc.decipher_text(content,int(users_df[users_df['user']==curr_user][entry.name].values[0]),entry.pubkey))
			else:
				print("Unable to decrypt without private key.")
				print(">>ENCRYPTED CONTENT:\n", entry.content)
			print("\t<---->\n")

		while(temp.next != self.head):
			temp = temp.next
			print("------- Node", temp.key,"-------")
			for entry in temp.data:
				print("\t<---->")
				print(">>FILE NAME:\n", entry.name)
				print(">>PUBLIC KEY:\n", entry.pubkey)
				content=entry.content
				if not users_df[users_df['user']==curr_user][entry.name].isna().values[0]:
					print("Decrypting with private key...")
					print(">>CONTENT:\n", acc.decipher_text(content,int(users_df[users_df['user']==curr_user][entry.name].values[0]),entry.pubkey))
				else:
					print("Unable to decrypt without private key.")
					print(">>ENCRYPTED CONTENT:\n", entry.content)
				print("\t<---->\n")
示例#2
0
def editor(DHT,dumpfile):
	while(True) :
		option=menu()

		if option == 1 :
			newNode = DHT.create_node()
			DHT.insert_node(newNode)
			pickle.dump(DHT,dumpfile)

		elif option == 2 :
			key = int(input("Enter node to be removed: "))
			DHT.remove_node(key)
			pickle.dump(DHT,dumpfile)
			print("Node removed!")

		elif option == 3 :
			key = int(input("Enter node to be used: "))
			used_node = DHT.ring_list.search(key)
			if used_node==None:
				print("Node not found!")
				continue
			print("\nOptions:\n1.Search for data\n2.Insert Data\n")
			choice = int(input("Enter choice: "))

			if choice == 1 :
				search_file = input("Enter file name:")
				search_key = DHT.hash_key(search_file)

				node = DHT.search(used_node,search_key)

				for entry in node.data:
					if search_file == entry.name:
						print("Found file in node ",node.address)
						
						print(users_df.loc[users_df['user']==user,entry.name].values[0] == np.nan)
						if math.isnan(users_df.loc[users_df['user']==user,entry.name].values[0] )  :
							print("no access")
							break

						else:
							dec = RSA()
							content_copy = entry.content
							print(users_df.loc[users_df['user']==user,entry.name].values[0])
							print(entry.pubkey)
							content = entry.content
							print(dec.decipher_text(content_copy,int(users_df.loc[users_df['user']==user,entry.name].values[0]),entry.pubkey))
							break

				else :
					print("File not found")

			elif choice == 2 :
				acc_contrl = RSA()
				acc_contrl.generate()

				filename = input("Enter filename: ")
				print("Enter [multiline] content: ")
				lines = []
				while True:
					line = input()
					if line:
						lines.append(line)
					else:
						break
				content = '\n'.join(lines)
				content_copy=content
				ins_key = DHT.hash_key(filename)
				print("File_key",ins_key)
				ins_node = DHT.search(used_node,ins_key)
				
				print("File inserted at node:",ins_node.key)
				
				users_df[filename] = [np.nan for i in range(users_df.shape[0])]
				users_df.loc[users_df['user']==user,filename]=acc_contrl.private_key()
				
				ins_node.data.append(DataFile(filename, acc_contrl.cipher_text(content_copy,acc_contrl.public_key(),acc_contrl.exponent()), acc_contrl.public_key(), acc_contrl.exponent()))
				# pickle.dump(DHT,dumpfile)
				


				#ins_node.data.append(DataFile(filename, acc_contrl.cipher_text(content,acc_contrl.public_key(),acc_contrl.exponent()), acc_contrl.public_key(), acc_contrl.exponent()))
				print("File encrypted with public key", acc_contrl.public_key())
				if len(users_df['user'].values)!=1:
					permch=input("Do you wish to give permission to other users? (y/n): ")
					if permch=='y' or permch=='Y':
						print('Other users:')
						for name in list(users_df['user'].values):
							if name != curr_user:
								print(name)
						select_user=input("Selection: ")
						if select_user in list(users_df['user'].values):
							users_df.loc[users_df['user']==select_user,filename]=acc_contrl.private_key()
						else:
							print("Invalid input")

				users_df.to_csv("users.csv",index=False)
				pickle.dump(DHT,dumpfile)


		elif option==5:
			netUI(DHT,dumpfile)
		else:
			pickle.dump(DHT,dumpfile)	
			dumpfile.close()
			exit()